magento2:extensions:magento-2-constant-contact
Differences
This shows you the differences between two versions of the page.
| magento2:extensions:magento-2-constant-contact [2026/08/20 23:53] – created - external edit 127.0.0.1 | magento2:extensions:magento-2-constant-contact [2026/08/24 19:43] (current) – swatwik | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Toweringmedia Constant Contact | + | ====== Toweringmedia Constant Contact |
| - | ===== Related overview | + | ===== Extension Overview |
| - | For a shopper-friendly overview of features | + | The Toweringmedia Constant Contact Extension connects Magento 2 customers |
| - | ===== Extension context | + | ===== Product Information |
| - | This is a Toweringmedia Magento 2 extension guide for the current admin extension catalog. | + | **Product Name:** [[https:// |
| - | ===== Product page ===== | + | **Support & Updates:** 12 months included |
| - | * [[https:// | + | ===== Key Features ===== |
| - | ===== Overview ===== | + | * Bidirectional synchronization between Magento customers, newsletter subscribers, |
| + | * Secure Constant Contact API v3 integration using OAuth 2.0 | ||
| + | * Database-backed queue for reliable outbound synchronization | ||
| + | * Scheduled inbound contact polling with synchronization checkpoints | ||
| + | * Magento Wins, Constant Contact Wins, and Newest Wins conflict-resolution options | ||
| + | * Automatic retry with exponential backoff for temporary API failures | ||
| + | * Loop prevention and idempotent processing to reduce duplicate synchronization | ||
| + | * Encrypted storage of OAuth access and refresh tokens | ||
| + | * Magento Admin controls for connecting, disconnecting, | ||
| + | * Manual synchronization and dry-run testing through Magento CLI commands | ||
| - | This extension connects Magento 2 to Constant Contact using the Constant Contact API v3. Customers and newsletter subscribers are pushed to your Constant Contact account through a queued sync so that list membership stays current without blocking storefront or admin actions. Authentication uses OAuth. | + | ===== Installation |
| - | + | ||
| - | ===== What this extension does ===== | + | |
| - | * Syncs Magento customers and newsletter subscribers | + | Please refer to the installation guide in the following article: [[https:// |
| - | * OAuth-based connection with client ID and client secret. | + | |
| - | * Queued sync so contact updates do not block checkout or admin saves. | + | |
| - | * Sync logs for troubleshooting failed or pending contact pushes. | + | |
| - | * Configurable logging level. | + | |
| ===== Requirements ===== | ===== Requirements ===== | ||
| - | * Magento 2.4.x (Open Source or Adobe Commerce). | + | Before configuring |
| - | * PHP: ^8.1 (as declared by the published package). | + | |
| - | * A current Toweringmedia license and Composer credentials for '' | + | |
| - | * A Constant Contact account with API access, and an application registered there to obtain | + | |
| - | ===== Installation ===== | + | * A supported Magento 2 installation |
| + | * An active Constant Contact account | ||
| + | * A Constant Contact developer application with an API Key and Client Secret | ||
| + | * The exact Magento OAuth callback URL registered in the Constant Contact developer portal | ||
| + | * HTTPS enabled for the Magento Admin URL | ||
| + | * Magento cron configured and running correctly | ||
| + | * Constant Contact list membership IDs for synchronization | ||
| + | * Magento Admin access for extension configuration | ||
| + | * Outbound server access to the Constant Contact API endpoints | ||
| - | Install and validate in a staging environment before production rollout. | + | ===== Admin Configuration ===== |
| - | <code bash> | + | After installing and enabling the extension, go to: |
| - | cd / | + | |
| - | composer require toweringmedia/module-constant-contact | + | **Magento Admin > Stores > Configuration > Customers |
| + | |||
| + | ==== General Settings ==== | ||
| + | |||
| + | * Enable or disable the Constant Contact integration. | ||
| + | * Enable the required outbound and inbound synchronization options. | ||
| + | * Select the appropriate website or store-view scope before saving configuration values. | ||
| + | |||
| + | ==== OAuth Configuration ==== | ||
| + | |||
| + | Enter the credentials generated from your Constant Contact developer application: | ||
| + | |||
| + | * API Key / Client ID | ||
| + | * Client Secret | ||
| + | * Redirect URI Override | ||
| + | |||
| + | The default callback URL follows this format: | ||
| - | bin/magento module: | + | < |
| - | bin/magento setup:upgrade | + | https://your-domain.com/{admin_path}/ |
| - | bin/magento setup: | + | |
| - | bin/magento setup: | + | |
| - | bin/magento cache:flush | + | |
| </ | </ | ||
| - | Currently published versions at the time of writing: | + | The callback URL configured in Magento must exactly match the URL registered in the Constant Contact developer portal. |
| - | * '' | + | ==== Connect Constant Contact ==== |
| - | Toweringmedia packages are served from the licensed Composer repository '' | + | After saving |
| - | General installation notes that apply to every Toweringmedia extension are in the [[https:// | + | - Click **Connect**. |
| + | - Sign in to the required Constant Contact account. | ||
| + | - Approve the requested permissions. | ||
| + | - Constant Contact redirects back to Magento Admin. | ||
| + | - Confirm that the connection status shows as connected. | ||
| - | ===== Configuration ===== | + | Access and refresh tokens are stored using Magento' |
| - | * Stores > Configuration > Towering Media > **Constant Contact (Towering Media)** (config section '' | + | ==== Synchronization Settings ==== |
| - | * Groups: '' | + | |
| - | * Admin screens: Marketing > Constant Contact > **Sync Queue**, **Sync Logs**, and **Configuration**. | + | |
| - | ===== Basic usage and what to expect ===== | + | Configure the following synchronization options: |
| - | | + | |
| - | - Enable the module, then watch Marketing > Constant Contact | + | |
| - | | + | * Outbound queue processing |
| + | * Scheduled inbound contact polling | ||
| + | * Constant Contact | ||
| + | | ||
| - | ===== Validation checklist ===== | + | ==== Conflict Resolution |
| - | | + | Select how subscription conflicts between Magento and Constant Contact should be handled: |
| - | * Extension configuration saves without errors | + | |
| - | * The admin screens listed above are reachable | + | |
| - | * Expected storefront/ | + | * **Constant Contact Wins** - Constant Contact membership is treated as the preferred source. |
| - | * No critical PHP/JS errors appear in '' | + | * **Newest Wins** - The most recently updated state is used. |
| + | |||
| + | Choose this setting carefully according to the store's subscription-management workflow. | ||
| + | |||
| + | ==== Test the Connection ==== | ||
| + | |||
| + | Click **API Smoke Test** to confirm that: | ||
| + | |||
| + | * OAuth authentication is valid. | ||
| + | * Magento can communicate with Constant Contact API v3. | ||
| + | * The configured account and tokens are working. | ||
| + | |||
| + | ==== Disconnect ==== | ||
| + | |||
| + | Use **Disconnect** when you need to remove the current Constant Contact authorization. After disconnecting, | ||
| + | |||
| + | ===== Basic Usage and What to Expect ===== | ||
| + | |||
| + | After the Constant Contact account is connected and synchronization settings are saved, the extension works automatically through Magento observers, the synchronization queue, and scheduled cron jobs. | ||
| + | |||
| + | ==== Normal Synchronization Flow ==== | ||
| + | |||
| + | * A Magento customer or newsletter-subscriber record is created or updated. | ||
| + | * The extension adds a synchronization request to its database-backed outbound queue. | ||
| + | * Magento cron or the synchronization CLI processes the queued request and sends the update to Constant Contact. | ||
| + | * The scheduled inbound process retrieves Constant Contact contact membership changes using synchronization checkpoints. | ||
| + | * Magento applies the configured conflict-resolution rule and records the result in the synchronization logs. | ||
| + | |||
| + | ==== What to Expect ==== | ||
| + | |||
| + | * Synchronization is asynchronous. Changes may not appear in Constant Contact or Magento immediately because they are processed by cron. | ||
| + | * Reliable Magento cron execution is required for automatic outbound queue processing and inbound polling. | ||
| + | * Temporary API failures and rate-limit responses are retried automatically using exponential backoff. | ||
| + | * Permanent errors are marked as failed and remain available for administrative review. | ||
| + | * Idempotent processing and synchronization hashes help prevent duplicate work and update loops. | ||
| + | * The selected conflict-resolution mode determines which subscription state is kept when Magento and Constant Contact disagree. | ||
| + | * Initial processing or large contact lists may take longer and may require batch-size or cron-frequency adjustments. | ||
| + | |||
| + | ==== Monitoring Synchronization ==== | ||
| + | |||
| + | Use the read-only synchronization queue and log grids in Magento Admin to review pending, processing, retry, completed, or failed operations. If a change has not synchronized, | ||
| + | |||
| + | ==== Manual and Dry-Run Processing ==== | ||
| + | |||
| + | Administrators can use the Magento CLI synchronization command for controlled manual processing. Dry-run mode can be used to validate the synchronization flow without applying live changes. | ||
| + | |||
| + | <code bash> | ||
| + | php bin/ | ||
| + | </ | ||
| + | |||
| + | ==== Important Limitations ==== | ||
| + | |||
| + | * Inbound synchronization primarily reconciles Magento newsletter subscription | ||
| + | * The extension uses scheduled polling rather than Constant Contact webhooks. | ||
| + | * Campaign sending, journeys, ecommerce catalog synchronization, | ||
| + | * Disconnecting the Constant Contact account stops synchronization until the account is authorized again. | ||
| + | |||
| + | ===== Validation Checklist ===== | ||
| + | |||
| + | After configuration, | ||
| + | |||
| + | * Confirm that the '' | ||
| + | * Confirm that the extension settings are saved under the intended website or store scope. | ||
| + | * Verify that the OAuth callback URL exactly matches the URL configured | ||
| + | * Confirm that Magento | ||
| + | * Run **API Smoke Test** | ||
| + | * Confirm that Magento cron is installed and running reliably. | ||
| + | * Test outbound synchronization by updating a Magento customer or newsletter subscriber, then verify that the queue item is processed and the Constant Contact list membership is updated. | ||
| + | * Test inbound synchronization by changing a contact' | ||
| + | * Verify that the selected conflict-resolution mode produces the expected result when Magento and Constant Contact contain different subscription states. | ||
| + | * Review the synchronization queue and log grids for unexpected failures or a growing retry backlog. | ||
| + | * Run '' | ||
| + | * Confirm that application logs do not expose OAuth access tokens, refresh tokens, or the Client Secret. | ||
| ===== Troubleshooting ===== | ===== Troubleshooting ===== | ||
| - | | + | Use the following checks when synchronization or authorization does not work as expected. |
| - | * **Feature not visible**: verify module | + | |
| - | * **Admin setting not applying**: clear cache and confirm | + | ==== Constant Contact Does Not Connect ==== |
| - | * **Unexpected behavior**: retest with only the required related modules enabled. | + | |
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ==== API Smoke Test Fails ==== | ||
| + | |||
| + | * Confirm that the account still shows as connected and that the configured Constant Contact account is active. | ||
| + | * Disconnect and reconnect the account if the authorization has expired or been revoked. | ||
| + | * Confirm that the Magento server can make outbound HTTPS requests to Constant Contact API endpoints. | ||
| + | |||
| + | ==== Magento Changes Are Not Reaching Constant Contact ==== | ||
| + | |||
| + | * Confirm that customer or newsletter-subscriber synchronization is enabled for the correct configuration scope. | ||
| + | * Verify that Magento cron is running | ||
| + | * Review the synchronization queue and logs for pending, retry, or failed items. | ||
| + | * Run '' | ||
| + | |||
| + | ==== Constant Contact Changes Are Not Appearing in Magento ==== | ||
| + | |||
| + | * Confirm that inbound synchronization is enabled | ||
| + | * Allow time for the next scheduled polling cycle; inbound changes are not received through webhooks. | ||
| + | | ||
| + | | ||
| + | |||
| + | ==== Items Remain in Retry or Failed Status ==== | ||
| + | |||
| + | | ||
| + | | ||
| + | * If the retry backlog continues to grow, confirm API availability, | ||
| + | |||
| + | ==== Subscription Status Changes Unexpectedly ==== | ||
| + | |||
| + | * Review the selected Magento Wins, Constant Contact Wins, or Newest Wins conflict-resolution mode. | ||
| + | | ||
| + | | ||
| + | |||
| + | ==== Before Contacting Support ==== | ||
| + | |||
| + | * Record | ||
| + | * Include the relevant queue status and sanitized synchronization-log message. | ||
| + | | ||
| ===== Support ===== | ===== Support ===== | ||
| Line 89: | Line 228: | ||
| ===== Related Magento 2 docs ===== | ===== Related Magento 2 docs ===== | ||
| - | * [[magento2: | + | * [[https:// |
| - | * [[start|Global docs home]] | + | * [[https:// |
magento2/extensions/magento-2-constant-contact.txt · Last modified: by swatwik
