Integration reference
Shopify Trigger and Action reference
Start from Shopify webhook topics and automate products, orders, and customers through Admin GraphQL.
Authentication
Connect the Shopify store through OAuth; requested scopes depend on the selected Source or Action.
- Trigger account type:
oauth2; reconnect byoauth. - Action connection type:
oauth2; available modes: Connected Shopify account.
Create or reuse the account from a Trigger or Action dialog, or manage it under Settings → Connected accounts. See Authentication and permissions for scopes and access diagnostics, or Connected accounts for reuse, reconnect, revocation, and credential rotation.
Scopes and permissions
The Trigger manifest does not declare a fixed base OAuth scope list. Installation access, API credentials, or the selected event configuration can still control available resources.
View 3 OAuth scopes used by current Actions
write_products, write_orders, write_customers
View 3 provider permissions or credential requirements
write_products, write_orders, write_customers
Operation-specific requirements appear in the tables below. Custom event selections can add scopes dynamically, so the current Trigger or Action dialog remains authoritative for the exact consent request.
Use Shopify as a Trigger
The current provider manifest contains 212 available Trigger definitions. Representative definitions include:
- Any Shopify Event
- Custom Webhook Events
- Orders Create
- Products Update
- Customers Create
- App Uninstalled
View all 212 available Trigger definitions
| Trigger | Manifest key | Delivery | Additional scopes |
|---|---|---|---|
| Any Shopify Event | shopify.any_event.instant | instant | read_orders, read_publications, read_product_listings, read_products, read_customers, read_customer_payment_methods, read_customer_merge, read_shipping, read_discounts, read_shopify_payments_disputes, read_draft_orders, read_fulfillments, read_merchant_managed_fulfillment_orders, read_inventory, read_inventory_shipments, read_inventory_shipments_received_items, read_inventory_transfers, read_locales, read_locations, read_markets, read_content, read_metaobjects, read_payment_terms, read_returns, read_own_subscription_contracts, read_themes |
| Custom Webhook Events | shopify.custom_webhook_events.instant | instant | None declared |
| App Purchases One Time Update | shopify.app_purchases_one_time_update.instant | instant | None declared |
| App Scopes Update | shopify.app_scopes_update.instant | instant | None declared |
| App Subscriptions Approaching Capped Amount | shopify.app_subscriptions_approaching_capped_amount.instant | instant | None declared |
| App Subscriptions Update | shopify.app_subscriptions_update.instant | instant | None declared |
| App Uninstalled | shopify.app_uninstalled.instant | instant | None declared |
| Bulk Operations Finish | shopify.bulk_operations_finish.instant | instant | None declared |
| Carts Create | shopify.carts_create.instant | instant | read_orders |
| Carts Update | shopify.carts_update.instant | instant | read_orders |
| Channels Delete | shopify.channels_delete.instant | instant | read_publications |
| Checkouts Create | shopify.checkouts_create.instant | instant | read_orders |
| Checkouts Delete | shopify.checkouts_delete.instant | instant | read_orders |
| Checkouts Update | shopify.checkouts_update.instant | instant | read_orders |
| Collection Listings Add | shopify.collection_listings_add.instant | instant | read_product_listings |
| Collection Listings Remove | shopify.collection_listings_remove.instant | instant | read_product_listings |
| Collection Listings Update | shopify.collection_listings_update.instant | instant | read_product_listings |
| Collection Publications Create | shopify.collection_publications_create.instant | instant | read_publications |
| Collection Publications Delete | shopify.collection_publications_delete.instant | instant | read_publications |
| Collection Publications Update | shopify.collection_publications_update.instant | instant | read_publications |
| Collections Create | shopify.collections_create.instant | instant | read_products |
| Collections Delete | shopify.collections_delete.instant | instant | read_products |
| Collections Update | shopify.collections_update.instant | instant | read_products |
| Companies Create | shopify.companies_create.instant | instant | read_customers |
| Companies Delete | shopify.companies_delete.instant | instant | read_customers |
| Companies Update | shopify.companies_update.instant | instant | read_customers |
| Company Contact Roles Assign | shopify.company_contact_roles_assign.instant | instant | read_customers |
| Company Contact Roles Revoke | shopify.company_contact_roles_revoke.instant | instant | read_customers |
| Company Contacts Create | shopify.company_contacts_create.instant | instant | read_customers |
| Company Contacts Delete | shopify.company_contacts_delete.instant | instant | read_customers |
| Company Contacts Update | shopify.company_contacts_update.instant | instant | read_customers |
| Company Locations Create | shopify.company_locations_create.instant | instant | read_customers |
| Company Locations Delete | shopify.company_locations_delete.instant | instant | read_customers |
| Company Locations Update | shopify.company_locations_update.instant | instant | read_customers |
| Customer Account Settings Update | shopify.customer_account_settings_update.instant | instant | None declared |
| Customer Groups Create | shopify.customer_groups_create.instant | instant | read_customers |
| Customer Groups Delete | shopify.customer_groups_delete.instant | instant | read_customers |
| Customer Groups Update | shopify.customer_groups_update.instant | instant | read_customers |
| Customer Joined Segment | shopify.customer.joined_segment.instant | instant | read_customers |
| Customer Left Segment | shopify.customer.left_segment.instant | instant | read_customers |
| Customer Payment Methods Create | shopify.customer_payment_methods_create.instant | instant | read_customer_payment_methods |
| Customer Payment Methods Revoke | shopify.customer_payment_methods_revoke.instant | instant | read_customer_payment_methods |
| Customer Payment Methods Update | shopify.customer_payment_methods_update.instant | instant | read_customer_payment_methods |
| Customer Tags Added | shopify.customer.tags_added.instant | instant | read_customers |
| Customer Tags Removed | shopify.customer.tags_removed.instant | instant | read_customers |
| Customers Create | shopify.customers_create.instant | instant | read_customers |
| Customers Delete | shopify.customers_delete.instant | instant | read_customers |
| Customers Disable | shopify.customers_disable.instant | instant | read_customers |
| Customers Email Marketing Consent Update | shopify.customers_email_marketing_consent_update.instant | instant | read_customers |
| Customers Enable | shopify.customers_enable.instant | instant | read_customers |
| Customers Marketing Consent Update | shopify.customers_marketing_consent_update.instant | instant | read_customers |
| Customers Merge | shopify.customers_merge.instant | instant | read_customer_merge |
| Customers Purchasing Summary | shopify.customers_purchasing_summary.instant | instant | read_customers |
| Customers Update | shopify.customers_update.instant | instant | read_customers |
| Customers Whats App Marketing Consent Update | shopify.customers_whats_app_marketing_consent_update.instant | instant | read_customers |
| Delivery Promise Settings Update | shopify.delivery_promise_settings_update.instant | instant | read_shipping |
| Discounts Create | shopify.discounts_create.instant | instant | read_discounts |
| Discounts Delete | shopify.discounts_delete.instant | instant | read_discounts |
| Discounts Redeemcode Added | shopify.discounts_redeemcode_added.instant | instant | read_discounts |
| Discounts Redeemcode Removed | shopify.discounts_redeemcode_removed.instant | instant | read_discounts |
| Discounts Update | shopify.discounts_update.instant | instant | read_discounts |
| Disputes Create | shopify.disputes_create.instant | instant | read_shopify_payments_disputes |
| Disputes Update | shopify.disputes_update.instant | instant | read_shopify_payments_disputes |
| Domains Create | shopify.domains_create.instant | instant | None declared |
| Domains Destroy | shopify.domains_destroy.instant | instant | None declared |
| Domains Update | shopify.domains_update.instant | instant | None declared |
| Draft Orders Create | shopify.draft_orders_create.instant | instant | read_draft_orders |
| Draft Orders Delete | shopify.draft_orders_delete.instant | instant | read_draft_orders |
| Draft Orders Update | shopify.draft_orders_update.instant | instant | read_draft_orders |
| Fulfillment Events Create | shopify.fulfillment_events_create.instant | instant | read_fulfillments |
| Fulfillment Events Delete | shopify.fulfillment_events_delete.instant | instant | read_fulfillments |
| Fulfillment Holds Added | shopify.fulfillment_holds_added.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Holds Released | shopify.fulfillment_holds_released.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Cancellation Request Accepted | shopify.fulfillment_orders_cancellation_request_accepted.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Cancellation Request Rejected | shopify.fulfillment_orders_cancellation_request_rejected.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Cancellation Request Submitted | shopify.fulfillment_orders_cancellation_request_submitted.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Cancelled | shopify.fulfillment_orders_cancelled.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Fulfillment Request Accepted | shopify.fulfillment_orders_fulfillment_request_accepted.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Fulfillment Request Rejected | shopify.fulfillment_orders_fulfillment_request_rejected.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Fulfillment Request Submitted | shopify.fulfillment_orders_fulfillment_request_submitted.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Fulfillment Service Failed To Complete | shopify.fulfillment_orders_fulfillment_service_failed_to_complete.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Hold Released | shopify.fulfillment_orders_hold_released.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Line Items Prepared For Local Delivery | shopify.fulfillment_orders_line_items_prepared_for_local_delivery.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Line Items Prepared For Pickup | shopify.fulfillment_orders_line_items_prepared_for_pickup.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Manually Reported Progress Stopped | shopify.fulfillment_orders_manually_reported_progress_stopped.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Merged | shopify.fulfillment_orders_merged.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Moved | shopify.fulfillment_orders_moved.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Order Routing Complete | shopify.fulfillment_orders_order_routing_complete.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Placed On Hold | shopify.fulfillment_orders_placed_on_hold.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Progress Reported | shopify.fulfillment_orders_progress_reported.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Rescheduled | shopify.fulfillment_orders_rescheduled.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Scheduled Fulfillment Order Ready | shopify.fulfillment_orders_scheduled_fulfillment_order_ready.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillment Orders Split | shopify.fulfillment_orders_split.instant | instant | read_merchant_managed_fulfillment_orders |
| Fulfillments Create | shopify.fulfillments_create.instant | instant | read_fulfillments |
| Fulfillments Update | shopify.fulfillments_update.instant | instant | read_fulfillments |
| Inventory Items Create | shopify.inventory_items_create.instant | instant | read_inventory |
| Inventory Items Delete | shopify.inventory_items_delete.instant | instant | read_inventory |
| Inventory Items Update | shopify.inventory_items_update.instant | instant | read_inventory |
| Inventory Levels Connect | shopify.inventory_levels_connect.instant | instant | read_inventory |
| Inventory Levels Disconnect | shopify.inventory_levels_disconnect.instant | instant | read_inventory |
| Inventory Levels Update | shopify.inventory_levels_update.instant | instant | read_inventory |
| Inventory Shipments Add Items | shopify.inventory_shipments_add_items.instant | instant | read_inventory_shipments |
| Inventory Shipments Create | shopify.inventory_shipments_create.instant | instant | read_inventory_shipments |
| Inventory Shipments Delete | shopify.inventory_shipments_delete.instant | instant | read_inventory_shipments |
| Inventory Shipments Mark In Transit | shopify.inventory_shipments_mark_in_transit.instant | instant | read_inventory_shipments |
| Inventory Shipments Receive Items | shopify.inventory_shipments_receive_items.instant | instant | read_inventory_shipments_received_items |
| Inventory Shipments Remove Items | shopify.inventory_shipments_remove_items.instant | instant | read_inventory_shipments |
| Inventory Shipments Update Item Quantities | shopify.inventory_shipments_update_item_quantities.instant | instant | read_inventory_shipments |
| Inventory Shipments Update Tracking | shopify.inventory_shipments_update_tracking.instant | instant | read_inventory_shipments |
| Inventory Transfers Add Items | shopify.inventory_transfers_add_items.instant | instant | read_inventory_transfers |
| Inventory Transfers Cancel | shopify.inventory_transfers_cancel.instant | instant | read_inventory_transfers |
| Inventory Transfers Complete | shopify.inventory_transfers_complete.instant | instant | read_inventory_transfers |
| Inventory Transfers Ready To Ship | shopify.inventory_transfers_ready_to_ship.instant | instant | read_inventory_transfers |
| Inventory Transfers Remove Items | shopify.inventory_transfers_remove_items.instant | instant | read_inventory_transfers |
| Inventory Transfers Update Item Quantities | shopify.inventory_transfers_update_item_quantities.instant | instant | read_inventory_transfers |
| Inventory Transfers Updated | shopify.inventory_transfers_updated.instant | instant | read_inventory_transfers |
| Locales Create | shopify.locales_create.instant | instant | read_locales |
| Locales Destroy | shopify.locales_destroy.instant | instant | read_locales |
| Locales Update | shopify.locales_update.instant | instant | read_locales |
| Locations Activate | shopify.locations_activate.instant | instant | read_locations |
| Locations Create | shopify.locations_create.instant | instant | read_locations |
| Locations Deactivate | shopify.locations_deactivate.instant | instant | read_locations |
| Locations Delete | shopify.locations_delete.instant | instant | read_locations |
| Locations Update | shopify.locations_update.instant | instant | read_locations |
| Markets Backup Region Update | shopify.markets_backup_region_update.instant | instant | read_markets |
| Markets Create | shopify.markets_create.instant | instant | read_markets |
| Markets Delete | shopify.markets_delete.instant | instant | read_markets |
| Markets Update | shopify.markets_update.instant | instant | read_markets |
| Metafield Definitions Create | shopify.metafield_definitions_create.instant | instant | read_content |
| Metafield Definitions Delete | shopify.metafield_definitions_delete.instant | instant | read_content |
| Metafield Definitions Update | shopify.metafield_definitions_update.instant | instant | read_content |
| Metaobjects Create | shopify.metaobjects_create.instant | instant | read_metaobjects |
| Metaobjects Delete | shopify.metaobjects_delete.instant | instant | read_metaobjects |
| Metaobjects Update | shopify.metaobjects_update.instant | instant | read_metaobjects |
| Order Transactions Create | shopify.order_transactions_create.instant | instant | read_orders |
| Orders Cancelled | shopify.orders_cancelled.instant | instant | read_orders |
| Orders Create | shopify.orders_create.instant | instant | read_orders |
| Orders Delete | shopify.orders_delete.instant | instant | read_orders |
| Orders Edited | shopify.orders_edited.instant | instant | read_orders |
| Orders Fulfilled | shopify.orders_fulfilled.instant | instant | read_orders |
| Orders Link Requested | shopify.orders_link_requested.instant | instant | read_orders |
| Orders Paid | shopify.orders_paid.instant | instant | read_orders |
| Orders Partially Fulfilled | shopify.orders_partially_fulfilled.instant | instant | read_orders |
| Orders Risk Assessment Changed | shopify.orders_risk_assessment_changed.instant | instant | read_orders |
| Orders Shopify Protect Eligibility Changed | shopify.orders_shopify_protect_eligibility_changed.instant | instant | read_orders |
| Orders Updated | shopify.orders_updated.instant | instant | read_orders |
| Payment Schedules Due | shopify.payment_schedules_due.instant | instant | read_payment_terms |
| Payment Terms Create | shopify.payment_terms_create.instant | instant | read_payment_terms |
| Payment Terms Delete | shopify.payment_terms_delete.instant | instant | read_payment_terms |
| Payment Terms Update | shopify.payment_terms_update.instant | instant | read_payment_terms |
| Product Feeds Create | shopify.product_feeds_create.instant | instant | read_product_listings |
| Product Feeds Full Sync | shopify.product_feeds_full_sync.instant | instant | read_product_listings |
| Product Feeds Full Sync Finish | shopify.product_feeds_full_sync_finish.instant | instant | read_product_listings |
| Product Feeds Incremental Sync | shopify.product_feeds_incremental_sync.instant | instant | read_product_listings |
| Product Feeds Update | shopify.product_feeds_update.instant | instant | read_product_listings |
| Product Listings Add | shopify.product_listings_add.instant | instant | read_product_listings |
| Product Listings Remove | shopify.product_listings_remove.instant | instant | read_product_listings |
| Product Listings Update | shopify.product_listings_update.instant | instant | read_product_listings |
| Product Publications Create | shopify.product_publications_create.instant | instant | read_publications |
| Product Publications Delete | shopify.product_publications_delete.instant | instant | read_publications |
| Product Publications Update | shopify.product_publications_update.instant | instant | read_publications |
| Products Create | shopify.products_create.instant | instant | read_products |
| Products Delete | shopify.products_delete.instant | instant | read_products |
| Products Update | shopify.products_update.instant | instant | read_products |
| Profiles Create | shopify.profiles_create.instant | instant | read_shipping |
| Profiles Delete | shopify.profiles_delete.instant | instant | read_shipping |
| Profiles Update | shopify.profiles_update.instant | instant | read_shipping |
| Refunds Create | shopify.refunds_create.instant | instant | read_orders |
| Returns Approve | shopify.returns_approve.instant | instant | read_returns |
| Returns Cancel | shopify.returns_cancel.instant | instant | read_orders |
| Returns Close | shopify.returns_close.instant | instant | read_orders |
| Returns Decline | shopify.returns_decline.instant | instant | read_returns |
| Returns Process | shopify.returns_process.instant | instant | read_returns |
| Returns Reopen | shopify.returns_reopen.instant | instant | read_orders |
| Returns Request | shopify.returns_request.instant | instant | read_returns |
| Returns Update | shopify.returns_update.instant | instant | read_returns |
| Reverse Deliveries Attach Deliverable | shopify.reverse_deliveries_attach_deliverable.instant | instant | read_returns |
| Reverse Fulfillment Orders Dispose | shopify.reverse_fulfillment_orders_dispose.instant | instant | read_returns |
| Scheduled Product Listings Add | shopify.scheduled_product_listings_add.instant | instant | read_product_listings |
| Scheduled Product Listings Remove | shopify.scheduled_product_listings_remove.instant | instant | read_product_listings |
| Scheduled Product Listings Update | shopify.scheduled_product_listings_update.instant | instant | read_product_listings |
| Segments Create | shopify.segments_create.instant | instant | read_customers |
| Segments Delete | shopify.segments_delete.instant | instant | read_customers |
| Segments Update | shopify.segments_update.instant | instant | read_customers |
| Selling Plan Groups Create | shopify.selling_plan_groups_create.instant | instant | read_products |
| Selling Plan Groups Delete | shopify.selling_plan_groups_delete.instant | instant | read_products |
| Selling Plan Groups Update | shopify.selling_plan_groups_update.instant | instant | read_products |
| Shipping Addresses Create | shopify.shipping_addresses_create.instant | instant | read_shipping |
| Shipping Addresses Update | shopify.shipping_addresses_update.instant | instant | read_shipping |
| Shop Update | shopify.shop_update.instant | instant | None declared |
| Subscription Billing Attempts Challenged | shopify.subscription_billing_attempts_challenged.instant | instant | read_own_subscription_contracts |
| Subscription Billing Attempts Failure | shopify.subscription_billing_attempts_failure.instant | instant | read_own_subscription_contracts |
| Subscription Billing Attempts Success | shopify.subscription_billing_attempts_success.instant | instant | read_own_subscription_contracts |
| Subscription Billing Cycle Edits Create | shopify.subscription_billing_cycle_edits_create.instant | instant | read_own_subscription_contracts |
| Subscription Billing Cycle Edits Delete | shopify.subscription_billing_cycle_edits_delete.instant | instant | read_own_subscription_contracts |
| Subscription Billing Cycle Edits Update | shopify.subscription_billing_cycle_edits_update.instant | instant | read_own_subscription_contracts |
| Subscription Billing Cycles Skip | shopify.subscription_billing_cycles_skip.instant | instant | read_own_subscription_contracts |
| Subscription Billing Cycles Unskip | shopify.subscription_billing_cycles_unskip.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Activate | shopify.subscription_contracts_activate.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Cancel | shopify.subscription_contracts_cancel.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Create | shopify.subscription_contracts_create.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Expire | shopify.subscription_contracts_expire.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Fail | shopify.subscription_contracts_fail.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Pause | shopify.subscription_contracts_pause.instant | instant | read_own_subscription_contracts |
| Subscription Contracts Update | shopify.subscription_contracts_update.instant | instant | read_own_subscription_contracts |
| Tender Transactions Create | shopify.tender_transactions_create.instant | instant | read_orders |
| Themes Create | shopify.themes_create.instant | instant | read_themes |
| Themes Delete | shopify.themes_delete.instant | instant | read_themes |
| Themes Publish | shopify.themes_publish.instant | instant | read_themes |
| Themes Update | shopify.themes_update.instant | instant | read_themes |
| Variants In Stock | shopify.variants_in_stock.instant | instant | read_products |
| Variants Out Of Stock | shopify.variants_out_of_stock.instant | instant | read_products |
Choose the narrowest event definition that fits the Workflow. Configure provider-specific resource and event filters in the Source dialog before adding broader Workflow Filters.
Use Shopify Actions
The current Action manifest contains 6 operations. Representative Actions include:
- Create Product
- Update Product
- Create Order
- Update Order
- Create Customer
- Custom GraphQL Request
View all 6 available Action definitions
| Action | Manifest key | Access and auth | Manifest rate limit |
|---|---|---|---|
| Create Product | shopify.create_product | write_productsFastHook-managed account | 2/second |
| Update Product | shopify.update_product | write_productsFastHook-managed account | 2/second |
| Create Order | shopify.create_order | write_ordersFastHook-managed account | 1/second |
| Update Order | shopify.update_order | write_ordersFastHook-managed account | 2/second |
| Create Customer | shopify.create_customer | write_customersFastHook-managed account | 2/second |
| Custom GraphQL Request | shopify.custom_graphql_request | write_products, write_orders, write_customersFastHook-managed account | 2/second |
The Action editor reads its required permissions, fields, remote resource pickers, output schema, and rate limit from the provider manifest. Available fields can change with the selected operation and authentication mode.
Build a Workflow
- Create a Source using a Shopify Trigger definition.
- Create a Workflow with that Source as its Trigger.
- Add the required Shopify Action and select the connected account.
- Map Trigger or earlier-Step data into the Action fields with the field picker.
- Add a Filter, Paths, Delay, or Transformation when the route needs it.
- Activate the Workflow, produce a controlled event, and verify the run in Audit and in Shopify.
Troubleshooting Shopify
- The account is missing or cannot be selected
- Confirm the active FastHook team, provider, account status, and authentication mode. A disabled or revoked account cannot execute an Action.
- A resource picker is empty
- Verify that the connected provider identity can access the resource itself. OAuth consent does not add workspace, repository, channel, drive, project, base, or record permissions.
- The editor asks for additional scopes
- Reconnect the same account from the affected Trigger or Action so FastHook can request its current manifest scopes. Then reopen the editor and select the resource again.
- An active Workflow returns 401, 403, or a permission error
- Compare the selected operation’s access requirements below with the account recorded in Audit. Check provider-side membership and object access before repeating the Action.
- The provider returns 429 or a temporary 5xx
- Inspect the Step attempt and retryability in Audit. FastHook can retry temporary failures, but provider quotas and idempotency rules still apply.
Provider-specific checks
- Store access and scopes are installation-specific.
- Keep app-uninstalled and privacy events operationally separate from ordinary commerce automations.