# Plugin Settings

Manage configuration settings for installed plugins.

**Breadcrumb:** [System Configuration](/core-configuration/core-configuration.md) > Plugin Settings

## Overview

Plugin Settings provide a centralized location to configure all installed plugins. Each plugin can define its own configuration schema, and PteroCA automatically generates admin UI for managing these settings.

**Key Features:**

* Dynamic settings per plugin
* Schema-based validation
* Type-safe configuration
* Namespace isolation
* Default value support

## Settings Overview

| Aspect            | Details                          |
| ----------------- | -------------------------------- |
| **Location**      | Settings → Plugins (Admin Panel) |
| **Configuration** | Per-plugin configuration forms   |
| **Storage**       | Database (`setting` table)       |
| **Namespace**     | `plugin:{plugin-name}`           |
| **CLI Coverage**  | None (Admin Panel only)          |

**Note:** Plugin settings are only configurable via Admin Panel. The CLI wizard does not cover plugin configuration.

## How Plugin Settings Work

Each installed plugin can define its own configuration options. PteroCA automatically generates a settings form in the Admin Panel where you can configure these options.

**Common Setting Types:**

* **Text fields** - For API keys, usernames, URLs
* **Password fields** - For secret keys and passwords
* **Toggles** - To enable/disable features
* **Dropdowns** - To select from multiple options (e.g., sandbox vs live mode)
* **Number fields** - For limits, timeouts, port numbers

Each plugin determines which settings it needs. For example, a payment plugin might need API credentials and an enable/disable toggle.

## Configuring Plugin Settings

1. Log in to the Admin Panel
2. Navigate to **Settings** in the main menu
3. Click **Plugins**
4. Select the plugin you want to configure from the list
5. Fill in the required settings (marked with \*)
6. Configure optional settings as needed
7. Click **Save**

**Tips:**

* Required fields are marked with an asterisk (\*)
* Hover over the (?) icon for help text about each setting
* Some settings only appear after enabling certain features
* Always test after changing plugin settings

## Common Plugin Types and Their Settings

Different types of plugins require different configuration options. Here are some examples:

### Payment Plugins

Payment plugins (like PayPal, Stripe alternatives) typically need:

* **API Credentials** - Client ID and Secret for authentication
* **Environment Mode** - Sandbox (testing) or Live (production)
* **Enable/Disable Toggle** - To activate or deactivate the payment method
* **Display Name** - How the payment method appears to customers

**Example: Configuring PayPal Plugin**

1. Navigate to Settings → Plugins → PayPal Payment
2. Enter your PayPal Client ID (from PayPal Developer Dashboard)
3. Enter your PayPal Client Secret
4. Select "Sandbox" for testing or "Live" for production
5. Enable the "Allow PayPal Payments" toggle
6. Click Save

### Integration Plugins

Plugins that connect to external services usually need:

* **API Endpoint URL** - Where the service is located
* **API Key or Token** - For authentication
* **Timeout Settings** - How long to wait for responses
* **Enable/Disable Toggle** - To control if the integration is active

### Notification Plugins

Plugins for sending notifications typically configure:

* **Notification Methods** - Email, SMS, Discord, etc.
* **Service Credentials** - API keys for notification services
* **Templates** - Message formatting and content
* **Trigger Conditions** - When to send notifications

### Customization Plugins

Plugins that modify appearance or behavior may have:

* **Theme Colors** - Color pickers for branding
* **Logo/Image Uploads** - Custom graphics
* **Feature Toggles** - Enable/disable specific features
* **Text Content** - Custom messages or labels

## Default Plugins

PteroCA includes several plugins that may have settings:

### Hello World Plugin

**Purpose:** Example plugin demonstrating plugin system

**Settings:** Minimal example settings

**Location:** `plugins/hello-world/`

### PayPal Payment Plugin

**Purpose:** Accept payments via PayPal

**Settings:**

* PayPal Client ID (API credentials)
* PayPal Client Secret
* Environment Mode (sandbox/live)
* Enable/Disable toggle

**Location:** `plugins/paypal-payment/`

**Setup Guide:** See [Payment Settings](/core-configuration/core-configuration/payment-configuration.md)

## Best Practices

1. **Review Settings:**
   * Understand what each setting does
   * Read help text carefully
   * Check plugin documentation
2. **Test in Sandbox:**
   * Use test/sandbox modes when available
   * Verify functionality before enabling
   * Test with small transactions
3. **Keep Credentials Secure:**
   * Use strong API keys
   * Rotate credentials periodically
   * Don't share screenshots with secrets
4. **Monitor Plugin Behavior:**
   * Check logs after enabling
   * Verify expected functionality
   * Watch for errors

## Troubleshooting

### Settings Not Saving

**Problem:** Plugin settings don't persist

**Causes:**

* Validation errors
* Database issues
* Cache problems

**Solutions:**

1. **Check for Error Messages:**
   * Look for validation errors in UI
   * Check browser console (F12)
2. **Verify Required Fields:**
   * Ensure all required fields filled
   * Check field types match
3. **Clear Cache:**

   ```bash
   php bin/console cache:clear
   ```
4. **Check Logs:**

   ```bash
   tail -f var/log/prod.log
   ```

### Plugin Not Appearing

**Problem:** Plugin settings page not showing

**Causes:**

* Plugin not installed
* Plugin not active
* No config\_schema defined

**Solutions:**

1. **Verify Plugin Installation:**
   * Check `plugins/` directory
   * Ensure plugin files present
2. **Check Plugin Status:**
   * Navigate to Plugins management
   * Verify plugin is enabled
3. **Verify config\_schema:**
   * Open `plugin.json`
   * Ensure `config_schema` exists and valid
4. **Clear Cache:**

   ```bash
   php bin/console cache:clear
   ```

### Invalid Setting Values

**Problem:** Setting value causing errors

**Causes:**

* Type mismatch
* Invalid format
* Out of range

**Solutions:**

1. **Check Type:**
   * Ensure value matches type
   * Number for number fields
   * Boolean for boolean fields
2. **Validate Format:**
   * URLs must include protocol
   * Emails must be valid format
   * Numbers within acceptable range
3. **Reset to Default:**
   * Delete setting to use default
   * Or manually set to plugin's default value

### Plugin Behavior After Setting Change

**Problem:** Plugin not responding to setting changes

**Causes:**

* Cache not cleared
* Plugin not reloaded
* Settings not yet applied

**Solutions:**

1. **Clear Cache:**

   ```bash
   php bin/console cache:clear
   ```
2. **Restart Workers:**

   ```bash
   # If using queue workers
   php bin/console messenger:stop-workers
   ```
3. **Check Application:**
   * Some plugins require application restart
   * Refresh browser
   * Log out and back in

## Related Documentation

* [**Payment Settings**](/core-configuration/core-configuration/payment-configuration.md) - Configure payment plugins
* [**General Settings**](/core-configuration/core-configuration/general-settings.md) - Core system settings
* [**Email Settings**](/core-configuration/core-configuration/email-configuration.md) - SMTP configuration for plugin notifications

## Need Help?

If you're having trouble configuring a plugin:

1. **Check Plugin Documentation** - Most plugins include setup instructions
2. **Review Plugin Settings Page** - Read the help text for each field
3. **Contact Plugin Developer** - For plugin-specific issues
4. **Check PteroCA Community** - Other users may have similar questions

**For Plugin Developers:** If you're developing custom plugins, see the [Plugin Development Guide](https://github.com/PteroCA-Org/pteroca-homepage/blob/docs/for-developers/plugins/README.md) in the For Developers section.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pteroca.com/customization-and-extensions/plugins/plugin-settings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
