SofthubStore
WordPress Products

X-Stream Sync

X-Stream Sync is a professional automation bridge between your WooCommerce store and your Xtream Codes IPTV panel. When a customer purchases an IPTV subscription product in your store, the plugin automatically calls your panel's API to create a new user account and emails the credentials to the customer — all without any manual action from you.

Version: 1.0.0 | Author: Softhub Store | Support: help.softhubstore.com

Live DemoBuy Now

1. Introduction

X-Stream Sync is a professional automation bridge between your WooCommerce store and your Xtream Codes IPTV panel. When a customer purchases an IPTV subscription product in your store, the plugin automatically calls your panel's API to create a new user account and emails the credentials to the customer — all without any manual action from you.

When an order is cancelled or refunded, the plugin can also automatically revoke (delete or suspend) the customer's IPTV account to protect your revenue.

What makes it different from other solutions?

  • It is fully configurable — you map the API parameters yourself, so it works with any Xtream Codes-compatible panel regardless of version or customization.
  • It provides a premium customer experience with a branded "My Subscriptions" panel inside the customer's WooCommerce account.
  • It features an advanced Analytics Dashboard to track sales, activations, and system health in real-time.
  • It includes a built-in license system that verifies your purchase every 12 hours automatically.

2. Requirements

Before installing the plugin, make sure your environment meets these requirements:

RequirementMinimum VersionRecommended
WordPress5.86.x
PHP7.48.1 or higher
WooCommerce6.0Latest
IPTV PanelAny Xtream Codes APILatest XC Panel
License KeyValid X-Stream Sync license

!IMPORTANT Your IPTV server must have its API endpoint accessible from your WordPress server. If your panel is on a private network, the plugin will not be able to reach it.


3. Installation

Step 1 — Upload the Plugin

  1. Log in to your WordPress admin dashboard.
  2. Go to Plugins → Add New → Upload Plugin.
  3. Click Choose File and select the x-stream-sync.zip file you downloaded.
  4. Click Install Now, then Activate Plugin.

Step 2 — Verify Installation

After activation, you will see a new menu item called X-Stream Sync in the left sidebar of your WordPress admin. Clicking it will take you directly to the License Activation screen (since no license is active yet).

!NOTE If you do not see the menu item, try deactivating and reactivating the plugin, or check that WooCommerce is installed and active.


4. License Activation

The plugin will not function until a valid license is activated. All WooCommerce automation hooks are completely disabled without an active license.

How to Activate

  1. Go to X-Stream Sync in the admin sidebar.
  2. You will see the Activate License screen.
  3. Fill in the following fields:
FieldDescription
License KeyThe key you received after purchasing (format: XXXX-XXXX-XXXX-XXXX)
Account EmailThe email address you used to purchase the plugin
Customer NameOptional — your name associated with the purchase
  1. Click Activate Plugin.
  2. If successful, the page will automatically reload and the full plugin dashboard will appear.

Automatic Background Checks

Once activated, WordPress will automatically verify your license every 12 hours in the background using WordPress Cron (wp_cron). If a check fails (e.g. your license is revoked or expired), the plugin will:

  • Disable all WooCommerce automation hooks.
  • Show a red admin notice across all WordPress admin pages with a link to re-activate.

!WARNING If your WordPress site has wp_cron disabled (common on some hosts that use real server cron), you must ensure an alternative cron mechanism is running to keep license checks active.

Managing Your License

After activation, go to X-Stream Sync → License tab to:

  • View your current license status (Active / Inactive).
  • See your registered email and a masked version of your key.
  • See when the license was last verified.
  • Re-enter your key to re-activate if needed.

5. General Settings

Go to X-Stream Sync → Settings to configure the basic connection details.

SettingDescription
API Base URLThe full URL to your IPTV panel's API endpoint. Example: http://yourpanel.com/api.php
API UsernameYour reseller/admin username on the IPTV panel
API PasswordYour reseller/admin password. It is encrypted and stored securely. Enter ******** to keep the existing password
Portal URL (For Customers)The URL shown to customers in their subscriptions panel (e.g. http://yourpanel.com). If left empty, the API Base URL is used
Customer Dashboard UIChoose the visual template for the "My Subscriptions" tab: Template 1 (Light Cards) or Template 2 (Dark Mode)

After filling in all fields, click Save Settings.

!TIP Use the Test API Connection button next to Save to instantly verify that the plugin can reach your server with the current credentials before configuring the API Builder.


6. API Builder

The API Builder is the heart of X-Stream Sync. Because different IPTV panel versions use different parameter names, this section lets you map exactly how the plugin should communicate with your server.

Go to X-Stream Sync → API Builder.

6.1 Global Request Settings

SettingOptionsDescription
API Request MethodGET / POSTHow parameters are sent to your API. Most Xtream Codes panels use GET. Check your panel's API documentation to confirm

6.2 Test Connection Parameters

These parameters are used when you click the Test API Connection button. They simulate a login request to verify your credentials.

FieldExample ValueDescription
Action KeyactionThe parameter name that holds the action type
Action ValueloginThe value that tells the API you are performing a login/test
Reseller Username KeyusernameThe parameter name for the reseller username
Reseller Password KeypasswordThe parameter name for the reseller password
Custom Parameterstype=outputAny additional static parameters your API requires (one per line, key=value format)

Example resulting request:

GET http://yourpanel.com/api.php?action=login&username=admin&password=secret

6.3 Create Account Parameters

These parameters are used when a WooCommerce order is marked as Processing or Completed and the product has an IPTV Package ID mapped.

FieldExample ValueDescription
Action KeyactionThe parameter name for the action
Action ValueuserThe value for creating a new user
Reseller Auth Keysusername / passwordIf your API requires reseller credentials to create a user (optional — leave empty if not needed)
New User Username KeyusernameThe parameter name for the new user's username
New User Password KeypasswordThe parameter name for the new user's password
Package ID Keypackage_idThe parameter name for the subscription package
Custom Parameterssub=createAny extra static parameters required

Example resulting request:

GET http://yourpanel.com/api.php?action=user&username=admin&password=secret&new_username=john123&new_password=abc456&package_id=5

!NOTE The plugin automatically generates a unique username and password for each new customer. These are saved to the order metadata and displayed in the customer's account.

6.4 Revoke Account Parameters

These parameters are used when auto-revocation is enabled and an order is Cancelled or Refunded.

FieldExample ValueDescription
Enable Revoke on Cancel/RefundYes / NoMaster switch for auto-revocation
Action KeyactionThe parameter name for the action
Action Valuedelete_userThe value for deleting/suspending a user
Target Username KeyusernameThe parameter name to identify the user to delete
Custom Parameterssub=deleteAny extra static parameters required

Example resulting request:

GET http://yourpanel.com/api.php?action=delete_user&username=john123

6.5 Advanced Connection Settings

For security reasons, some IPTV panels or servers use firewalls (like Cloudflare or Imunify360) that block standard API requests coming from servers. X-Stream Sync allows you to bypass these restrictions using advanced settings.

FieldDescription
Enable Browser-like HeadersWhen enabled, the plugin sends a "User-Agent" header that mimics a real Chrome browser. This helps bypass most bot-protection systems.
Verify SSL CertificateRecommended: On. Disable this only if your IPTV server uses a self-signed or expired SSL certificate that causes connection errors.

How to use: If you receive a "403 Forbidden" or "Connection Timeout" error during testing, try enabling Pro Headers and disabling SSL Verify.

After configuring all sections, click Save API Settings, then use Test API Connection to confirm everything works.


7. Package Mapping

To link a WooCommerce product to an IPTV package on your server, you must set the Package ID on each product.

Steps

  1. Go to Products in WooCommerce.
  2. Click Edit on the product you want to configure.
  3. Scroll down to the Product Data section.
  4. Click on the IPTV Package tab in the left column.
  5. Enter the Package ID exactly as it appears in your Xtream Codes panel (usually a number like 5 or 12).
  6. Optionally, check the Free Trial Product checkbox if this product should be treated as a free trial (see Free Trial Protection).
  7. Click Update to save the product.

!IMPORTANT If a product does not have a Package ID set, X-Stream Sync will skip it entirely — no IPTV account will be created for that order item. This is intentional, so you can have mixed WooCommerce stores where only some products are IPTV subscriptions.


8. Free Trial Protection

X-Stream Sync includes a built-in mechanism to prevent customers from abusing free trial products.

How It Works

When a product is marked as a Free Trial (via the IPTV Package tab), the plugin checks at checkout:

  1. Has the current logged-in user ever placed an order with this free trial product before?
  2. Has any order with this email address ever included this free trial product?

If either condition is true, the checkout is blocked with an error message explaining that the free trial has already been used.

Enabling Free Trial Protection

  1. Edit the free trial product.
  2. Go to Product Data → IPTV Package tab.
  3. Check the Free Trial Product checkbox.
  4. Save the product.

No other configuration is needed. The protection is automatic.


9. Auto-Revocation

This feature automatically calls your IPTV panel's API to delete or suspend a user's account when their WooCommerce order is cancelled or refunded.

Enabling Auto-Revocation

  1. Go to X-Stream Sync → API Builder.
  2. Fill in the Revoke Account Parameters section (see Section 6.4).
  3. Set Enable Revoke on Cancel/Refund to Yes.
  4. Save the settings.

What Triggers Revocation

WooCommerce Order StatusRevocation Triggered?
Cancelled✅ Yes
Refunded✅ Yes
Failed❌ No
On Hold❌ No
Processing❌ No (triggers creation)
Completed❌ No (triggers creation)

Important Notes

  • Revocation only works if the order previously had an IPTV account created (i.e., the username is saved to the order metadata).
  • If the API call fails during revocation, an error is logged in the Activity Logs tab. The order status change still proceeds in WooCommerce.

10. Admin Subscriptions Management

Go to X-Stream Sync → Subscriptions to view and manage all IPTV accounts generated by the plugin.

Subscriptions Table

The table provides a bird's-eye view of your entire IPTV customer base:

ColumnDescription
CustomerThe customer's name and billing email address
ProductThe name of the IPTV product purchased
UsernameThe current IPTV username (Editable)
PasswordThe current IPTV password (Editable)
DurationThe subscription length (if returned by the API)
Time RemainingReal-time countdown to expiry (if returned by the API)
Order IDLink to the original WooCommerce order

Editing Credentials

If a customer requests a change or if you need to manually fix an account, you can edit the Username and Password directly from this table:

  1. Click the Edit button on the right side of the row.
  2. The username and password fields will become editable text inputs.
  3. Enter the new values.
  4. Click Save to update the order metadata.
  5. Click Cancel if you want to discard changes.

!IMPORTANT Editing the username or password here only updates the local WordPress database. It does NOT automatically update the credentials on your IPTV panel. You must ensure the panel credentials match these manual changes.


11. Customer Dashboard — My Subscriptions

After a successful purchase, customers can view their IPTV credentials by logging in to their WooCommerce account and navigating to My Account → My Subscriptions.

What Customers See

For each active IPTV subscription, the panel displays:

  • Subscription name (product name + order ID)
  • Server/Portal URL (configured in General Settings)
  • Username (with a one-click copy button)
  • Password (masked by default, with a one-click copy button that reveals and copies the real value)
  • Download M3U Playlist button (auto-generates the standard Xtream Codes M3U URL)

Choosing a Template

Go to X-Stream Sync → Settings and change the Customer Dashboard UI dropdown:

  • Template 1 — Modern Light Cards: Clean white cards with soft shadows, ideal for light-colored websites.
  • Template 2 — Sleek Dark Mode: Dark slate cards with glowing accents, ideal for dark-themed sites or tech/gaming audiences.

The change takes effect immediately without any theme modifications.


12. Activity Logs

Go to X-Stream Sync → Sync Logs to view a full history of all API operations.

Each log entry contains:

ColumnDescription
Date/TimeWhen the operation occurred
Order IDThe WooCommerce order associated with the operation
ActionThe type of operation (created, revoked, failed, etc.)
StatusWhether the operation succeeded or failed
DetailsThe full raw API request URL and the full raw API response body

Reading the Logs

  • A green status means the API returned a successful response and the account was created/revoked.
  • A red status means something went wrong — expand the Details column to see the exact request sent and response received to diagnose the issue.

!TIP The Details section shows the exact URL or POST body that was sent, and the exact JSON response from your server. This is extremely useful for debugging API parameter mismatches.

Logs are stored in the WordPress database in the {prefix}_xss_logs table and persist across plugin updates.


13. Analytics Dashboard

The Analytics Dashboard provides a visual overview of your IPTV business performance. It is the default screen when you enter the X-Stream Sync menu.

Key Metrics

MetricDescription
Total SalesThe cumulative revenue from all WooCommerce orders linked to IPTV packages
Active SubscriptionsThe total number of unique customers with at least one IPTV account created
Sync Success RateThe percentage of successful API calls vs. failures
Failed Syncs (24h)A real-time count of failed API operations in the last 24 hours

Interactive Charts

  • Sales Revenue Trend: A line chart showing your daily revenue for the last 30 days.
  • Activation Trends: A bar chart showing the number of new IPTV accounts created daily over the last 30 days.

Business Insights

  • Top IPTV Packages: A ranked list of your most popular packages based on the number of active subscriptions.
  • System Status: A health check panel that monitors WooCommerce integration, background cron tasks (for licenses), and the logging database.

14. License Management

Go to X-Stream Sync → License tab at any time to manage your license.

License Status Card

Shows whether your license is currently Active or Inactive along with the last verification timestamp.

Re-Activating Your License

If your license becomes inactive (e.g., after switching domains or if a background check fails), fill in the form in the License tab and click Verify & Activate License.

Domain Changes

Your license is tied to the domain it was activated on. If you move to a new domain, you may need to contact support at hello@softhubstore.com to transfer the license.


15. Frequently Asked Questions (FAQ)


Q: The plugin says my license is invalid even though I just purchased it. What do I do?

A: Make sure you are using the exact license key and the exact email address you used at checkout. Keys are case-sensitive. If the problem persists, contact support with your order number.


Q: Will the plugin work with panels other than Xtream Codes?

A: Yes, as long as your panel exposes an HTTP API (GET or POST) that accepts parameters for creating and deleting users. The API Builder gives you full control to map the parameters. However, panels with non-standard authentication (OAuth, JWT, etc.) are not currently supported.


Q: What username and password format are generated for customers?

A: The plugin generates a unique username based on the customer's email (sanitized) combined with a random suffix, and a random 10-character alphanumeric password. Both are stored in the WooCommerce order metadata.


Q: Can I set a custom expiry date for IPTV accounts?

A: This depends on your panel's API. If your API accepts an expiry parameter, you can add it to the Custom Parameters field in the Create Account section of the API Builder using key=value format.


Q: A customer's order was refunded but their account was not deleted. Why?

A: Check the Activity Logs for that order. Common causes are:

  1. Auto-Revoke is disabled — Make sure "Enable Revoke on Cancel/Refund" is set to Yes in the API Builder.
  2. No IPTV account was ever created — Revocation only works if an account was previously created and the username is saved to the order.
  3. API call failed — Check the log details to see the exact error from your server.

Q: The Test Connection button says "Connection failed" but my credentials are correct. What's wrong?

A: This usually means one of the following:

  1. The API Base URL is incorrect — double check it includes api.php or whatever endpoint your panel uses.
  2. Your WordPress server cannot reach the IPTV panel server (firewall, different network, SSL issue). Ask your host to confirm outbound HTTP connections are allowed.
  3. The Test Connection Parameters are not correctly mapped — compare them to your panel's API documentation.

Q: Can multiple products point to the same IPTV package?

A: Yes. You can set the same Package ID on multiple WooCommerce products (e.g., a monthly and a yearly plan that both map to the same IPTV package type). The package ID is just passed as-is to your API.


Q: Is the customer's password stored securely?

A: Passwords are stored as order metadata in the WordPress database. The customer-facing "My Subscriptions" panel masks the password by default (shown as ••••••••) with a secure copy button. The admin API password (reseller credentials) is encrypted using a key unique to your WordPress installation.


Q: What happens if a customer purchases multiple IPTV products in one order?

A: The plugin loops through all order items. Each item with a valid IPTV Package ID will trigger a separate API call and create a separate IPTV account. Each account will be shown as a separate card in the customer's "My Subscriptions" panel.


Q: Does the plugin send credentials to the customer by email?

A: Yes. The IPTV credentials (username, password, and portal URL) are automatically appended to WooCommerce's standard order confirmation email sent to the customer.


Q: My WordPress site doesn't use WP-Cron. Will license checks still work?

A: If DISABLE_WP_CRON is set to true in your wp-config.php, scheduled tasks won't run automatically. You must set up a real server cron job that hits https://yoursite.com/wp-cron.php?doing_wp_cron at least every 12 hours. Contact your host for instructions on setting up a server cron job.


16. Troubleshooting

Plugin menu doesn't appear after activation

  • Ensure WooCommerce is installed and active — X-Stream Sync requires WooCommerce.
  • Deactivate and reactivate the plugin.
  • Check for PHP errors in your server error log.

IPTV account not created after order

  1. Go to Sync Logs and find the order entry.
  2. If there is no log entry at all: the product likely does not have a Package ID set, or the order status is not Processing or Completed.
  3. If there is an error log: expand the Details to read the API response and fix the parameter mismatch in the API Builder.

Customer doesn't see "My Subscriptions" in their account

  1. Go to WooCommerce → Settings → Advanced → Page Setup and confirm the "My Account" page is set correctly.
  2. Go to Settings → Permalinks and click Save Changes to flush rewrite rules.
  3. Make sure the customer has at least one order with a created IPTV account.

Copy button for password doesn't work

The copy button works by creating a temporary hidden input element, copying the value, and removing it. This approach supports all modern browsers including those that restrict access to password input values. If it still doesn't work:

  • Ensure your site is served over HTTPS (required for the Clipboard API in modern browsers).
  • Check for JavaScript errors in the browser console.

Official Support Channels

Need help?


Softhub StoreEasy to use and become an automatic distributor, one after another.

Copyright © 2026