Skip to content

ProductSync error 'The resource is not set.' #104

Description

@lorana94

@bradbecker-ac / @jorgeeurekalabs

=== ActiveCampaign Product Sync Error Report ===
Generated: 2026-06-08T08:36:45Z
Magento: Magento CLI 2.4.8-p3
Plugin: activecampaign/module-integration 2.1.28 (GitHub main)
PHP: PHP 8.3.16 (cli) (built: Jan 17 2025 01:31:10) (NTS)
URL: [please contact Loran]

=== USER-FACING ERROR ===
The resource is not set.

=== WHEN IT HAPPENS ===

  • Saving ActiveCampaign config with Product Sync enabled in admin
  • Specifically when saving field: active_campaign/product_sync/cron_minute
  • Backend model: ActiveCampaign\Product\Model\Config\CronConfig

=== REPRODUCTION (CLI) ===
The resource isn't set.

=== STACK TRACE (captured via PHP) ===
Instantiated class: ActiveCampaign\Product\Model\Config\CronConfig
Resource name on model: []
Magento\Framework\Exception\LocalizedException: The resource isn't set.
#0 /var/www/html/vendor/magento/framework/Model/AbstractModel.php(681): Magento\Framework\Model\AbstractModel->_getResource()
#1 Command line code(14): Magento\Framework\Model\AbstractModel->save()
#2 {main}

=== ROOT CAUSE ANALYSIS ===
Product\Model\Config\CronConfig is created WITHOUT a resource model injected.
Order\Model\Config\CronConfig works because a compiled Interceptor exists from di:compile.
Product module (new in v2.1.28) has no di.xml wiring for CronConfig resource/runModelPath.
Missing compared to Magento core cron backends: argument resource + runModelPath in di.xml

=== DIAGNOSTIC: resource injection comparison ===
Order class=ActiveCampaign\Order\Model\Config\CronConfig\Interceptor resource=Magento\Config\Model\ResourceModel\Config\Data
Product class=ActiveCampaign\Product\Model\Config\CronConfig resource=NULL

=== RELEVANT PLUGIN FILE ===
vendor/activecampaign/module-integration/Product/Model/Config/CronConfig.php
vendor/activecampaign/module-integration/Product/etc/adminhtml/system.xml (cron_minute uses backend_model)
vendor/activecampaign/module-integration/Product/etc/di.xml (missing CronConfig DI)

=== MAGENTO LOGS (sanitized) ===
--- system.log (ActiveCampaign related) ---
[2026-06-08T08:20:41.800614+00:00] main.CRITICAL: Type Error occurred when creating object: ActiveCampaign\AbandonedCart\Model\Config\CronConfig\Interceptor, ActiveCampaign\AbandonedCart\Model\Config\CronConfig::__construct(): Argument #4 ($configWriter) must be of type Magento\Framework\App\Config\ConfigResource\ConfigInterface, Magento\Framework\App\Cache\TypeList\Interceptor given, called in /var/www/html/generated/code/ActiveCampaign/AbandonedCart/Model/Config/CronConfig/Interceptor.php on line 14 [] []
[2026-06-08T08:20:41.800872+00:00] main.ERROR: Type Error occurred when creating object: ActiveCampaign\AbandonedCart\Model\Config\CronConfig\Interceptor, ActiveCampaign\AbandonedCart\Model\Config\CronConfig::__construct(): Argument #4 ($configWriter) must be of type Magento\Framework\App\Config\ConfigResource\ConfigInterface, Magento\Framework\App\Cache\TypeList\Interceptor given, called in /var/www/html/generated/code/ActiveCampaign/AbandonedCart/Model/Config/CronConfig/Interceptor.php on line 14 [] []
--- activecampaign.log (API tokens redacted) ---
[2026-06-08T08:33:14.111734+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"GET","URL":"https://{account_url}.api-us1.com/api/3/fields?limit=20&offset=0","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":""} []
[2026-06-08T08:33:14.329510+00:00] ActiveCampaign.INFO: RESPONSE {"fields":[],"meta":{"total":"0","selected":null}} []
[2026-06-08T08:33:31.367672+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"GET","URL":"https://{account_url}.api-us1.com/api/3/fields?limit=20&offset=0","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":""} []
[2026-06-08T08:33:31.524953+00:00] ActiveCampaign.INFO: RESPONSE {"fields":[],"meta":{"total":"0","selected":null}} []
[2026-06-08T08:33:58.713397+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"GET","URL":"https://{account_url}.api-us1.com/api/3/contacts?filters[email]={email}","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":""} []
[2026-06-08T08:33:58.889424+00:00] ActiveCampaign.INFO: RESPONSE {"contacts":[],"meta":{"page_input":{"segmentid":null,"formid":0,"listid":0,"tagid":0,"limit":20,"offset":0,"search":null,"sort":null,"seriesid":0,"waitid":0,"status":-1,"forceQuery":0,"cacheid":"477a974caa99f42ba7e2c8529516a0bf"},"total":"0","sortable":true}} []
[2026-06-08T08:33:58.892331+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"POST","URL":"https://{account_url}.api-us1.com/api/3/contacts","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":"{"contact":{"email":"{email}","firstName":"{name}","lastName":"{lastname}","phone":"+{phone}","fieldValues":[]}}"} []
[2026-06-08T08:33:59.248552+00:00] ActiveCampaign.INFO: RESPONSE {"fieldValues":[],"contact":{"email":"{email}","phone":"+{phone}","firstName":"{name}","lastName":"{lastname}","cdate":"2026-06-08T03:33:59-05:00","udate":"2026-06-08T03:33:59-05:00","orgid":"0","orgname":"","accountContacts":[],"links":{"bounceLogs":"https://{account_url}.api-us1.com/api/3/contacts/3/bounceLogs","contactAutomations":"https://{account_url}.api-us1.com/api/3/contacts/3/contactAutomations?limit=2500&orders%5Blastdate%5D=DESC","contactData":"https://{account_url}.api-us1.com/api/3/contacts/3/contactData","contactGoals":"https://{account_url}.api-us1.com/api/3/contacts/3/contactGoals","contactLists":"https://{account_url}.api-us1.com/api/3/contacts/3/contactLists","contactLogs":"https://{account_url}.api-us1.com/api/3/contacts/3/contactLogs","contactTags":"https://{account_url}.api-us1.com/api/3/contacts/3/contactTags","contactDeals":"https://{account_url}.api-us1.com/api/3/contacts/3/contactDeals","deals":"https://{account_url}.api-us1.com/api/3/contacts/3/deals","fieldValues":"https://{account_url}.api-us1.com/api/3/contacts/3/fieldValues","geoIps":"https://{account_url}.api-us1.com/api/3/contacts/3/geoIps","notes":"https://{account_url}.api-us1.com/api/3/contacts/3/notes","organization":"https://{account_url}.api-us1.com/api/3/contacts/3/organization","plusAppend":"https://{account_url}.api-us1.com/api/3/contacts/3/plusAppend","trackingLogs":"https://{account_url}.api-us1.com/api/3/contacts/3/trackingLogs","scoreValues":"https://{account_url}.api-us1.com/api/3/contacts/3/scoreValues","automationEntryCounts":"https://{account_url}.api-us1.com/api/3/contacts/3/automationEntryCounts"},"fieldValues":[],"id":"3","organization":null}} []
[2026-06-08T08:33:59.251420+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"GET","URL":"https://{account_url}.api-us1.com/api/3/ecomCustomers?filters[email]={email}","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":""} []
[2026-06-08T08:33:59.369736+00:00] ActiveCampaign.INFO: RESPONSE {"ecomCustomers":[],"meta":{"total":0}} []
[2026-06-08T08:33:59.375490+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"POST","URL":"https://{account_url}.api-us1.com/api/3/ecomCustomers","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":"{"ecomCustomer":{"email":"{email}","firstName":"{name}","lastName":"{lastname}","phone":"+{phone}","fieldValues":[],"connectionid":"2","externalid":"{email}","acceptsMarketing":0}}"} []
[2026-06-08T08:33:59.601161+00:00] ActiveCampaign.INFO: RESPONSE {"connections":[{"service":"magento2-Default Store View","externalid":"default","name":"Default Store View","isInternal":"0","connectionType":"ecommerce","status":"1","syncStatus":"0","sync_request_time":null,"sync_start_time":null,"lastSync":null,"logoUrl":"https://{url}/static/version1775921150/adminhtml/Magento/backend/en_US/images/logo.svg","linkUrl":"https://{url}/","credentialExpiration":null,"cdate":"2026-04-11T10:39:18-05:00","udate":"2026-04-11T10:39:18-05:00","disconnectDate":null,"listId":"1","planTier":null,"links":{"options":"https://{account_url}.api-us1.com/api/3/connections/2/options","customers":"https://{account_url}.api-us1.com/api/3/connections/2/customers"},"id":"2","serviceName":"magento2-Default Store View"}],"ecomCustomer":{"email":"{email}","phone":"+{phone}","connectionid":"2","externalid":"{email}","avgRevenuePerOrder":0,"totalRevenue":0,"totalOrders":0,"totalProducts":0,"acceptsMarketing":0,"connection":"2","subscriberid":"3","first_name":"{name}","last_name":"{lastname}","links":{"connection":"https://{account_url}.api-us1.com/api/3/ecomCustomers/5/connection","subscriber":"https://{account_url}.api-us1.com/api/3/ecomCustomers/5/subscriber","orders":"https://{account_url}.api-us1.com/api/3/ecomCustomers/5/orders"},"id":"5","subscriber":"3"}} []
[2026-06-08T08:33:59.754361+00:00] ActiveCampaign.INFO: REQUEST {"METHOD":"POST","URL":"https://{account_url}.api-us1.com/api/3/ecomOrders","HTTP VERSION":"1.1","HEADERS":{"Content-Type":"application/json","Api-Token":"[REDACTED]},"BODY DATA":"{"ecomOrder":{"externalcheckoutid":"108","source":1,"email":"{email}","orderProducts":[{"externalid":"31","name":"Proteus Fitness Jackshirt","price":4500,"quantity":1,"sku":"MJ12-M-Blue","description":"

Part jacket, part shirt, the Proteus Fitness Jackshirt makes an ideal companion for outdoor training, camping or loafing on crisp days. Natural Cocona® technology brings breathable comfort and increased dryness along with UV protection and odor management. The drop-tail hem provides extra coverage when you're riding a bike or replacing a sink valve.<\/p>\n

• 1\/4 zip. Stand-up collar. <br \/>• Machine wash\/dry.<br \/>• Quilted inner layer.<\/p>","imageUrl":"https:\/\/{url}\/media\/catalog\/product\/cache\/207e23213cf636ccdef205098cf3c8a3\/m\/j\/mj12-orange_main_1.jpg","productUrl":"https:\/\/{url}\/proteus-fitness-jackshirt.html","category":"Jackets"}],"orderDiscounts":{"discountAmount":0},"orderUrl":"https:\/\/{url}\/checkout\/cart?ac_redirect=true","abandonedDate":"2026-04-11T11:47:05-04:00","externalCreatedDate":"2026-04-11T11:47:05-04:00","externalUpdatedDate":"2026-04-11T11:47:05-04:00","shippingMethod":"flatrate_flatrate","totalPrice":5000,"shippingAmount":500,"taxAmount":0,"discountAmount":0,"currency":"USD","orderNumber":"108","connectionid":"2","customerid":"5"}}"} []
[2026-06-08T08:33:59.969694+00:00] ActiveCampaign.INFO: RESPONSE {"connections":[{"service":"magento2-Default Store View","externalid":"default","name":"Default Store View","isInternal":"0","connectionType":"ecommerce","status":"1","syncStatus":"0","sync_request_time":null,"sync_start_time":null,"lastSync":null,"logoUrl":"https://{url}/static/version1775921150/adminhtml/Magento/backend/en_US/images/logo.svg","linkUrl":"https://{url}/","credentialExpiration":null,"cdate":"2026-04-11T10:39:18-05:00","udate":"2026-04-11T10:39:18-05:00","disconnectDate":null,"listId":"1","planTier":null,"links":{"options":"https://{account_url}.api-us1.com/api/3/connections/2/options","customers":"https://{account_url}.api-us1.com/api/3/connections/2/customers"},"id":"2","serviceName":"magento2-Default Store View"}],"ecomOrderProducts":[{"orderid":"3","connectionid":"2","externalid":"31","sku":"MJ12-M-Blue","name":"Proteus Fitness Jackshirt","description":"

Part jacket, part shirt, the Proteus Fitness Jackshirt makes an ideal companion for outdoor training, camping or loafing on crisp days. Natural Cocona® technology brings breathable comfort and increased dryness along with UV protection and odor management. The drop-tail hem provides extra coverage when you're riding a bike or replacing a sink valve.

• 1/4 zip. Stand-up collar.
• Machine wash/dry.
• Quilted inner layer.

","price":"4500","quantity":"1","category":"Jackets","imageUrl":"https://{url}/media/catalog/product/cache/207e23213cf636ccdef205098cf3c8a3/m/j/mj12-orange_main_1.jpg","productUrl":"https://{url}/proteus-fitness-jackshirt.html","createdDate":"2026-06-08T03:33:59-05:00","updatedDate":"2026-06-08T03:33:59-05:00","tags":[],"isOnSale":null,"brand":null,"averageRating":null,"tstamp":"2026-06-08T03:33:59-05:00","links":{"ecomOrder":"https://{account_url}.api-us1.com/api/3/ecomOrderProducts/7/ecomOrder"},"id":"7","ecomOrder":"3"}],"ecomOrder":{"externalcheckoutid":"108","source":1,"email":"{email}","currency":"USD","connectionid":"2","customerid":"5","orderUrl":"https://{url}/checkout/cart?ac_redirect=true","abandonedDate":"2026-04-11T10:47:05-05:00","externalCreatedDate":"2026-04-11T10:47:05-05:00","externalUpdatedDate":"2026-04-11T10:47:05-05:00","shippingMethod":"flatrate_flatrate","totalPrice":5000,"shippingAmount":500,"taxAmount":0,"discountAmount":0,"orderNumber":"108","totalProducts":1,"createdDate":"2026-06-08T03:33:59-05:00","updatedDate":"2026-06-08T03:33:59-05:00","state":2,"orderProducts":["7"],"orderDate":"2026-04-11T10:47:05-05:00","tstamp":"2026-06-08T03:33:59-05:00","links":{"connection":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/connection","customer":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/customer","orderProducts":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/orderProducts","orderDiscounts":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/orderDiscounts","orderActivities":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/orderActivities","subscriberConversions":"https://{account_url}.api-us1.com/api/3/ecomOrders/3/subscriberConversions"},"externalid":"","customer":"5","connection":"2","id":"3"}} [] --- exception.log: no Product Sync resource error logged (error surfaces in admin UI only) ---

=== INSTALLED AC MODULES ===
ActiveCampaign_Core
ActiveCampaign_AbandonedCart
ActiveCampaign_Customer
ActiveCampaign_Newsletter
ActiveCampaign_Order
ActiveCampaign_Product
ActiveCampaign_SyncLog

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions