Product update notifications - October 2026
Email the buyers of a product that it has been updated — the campaign a merchant starts with Notify customers on a product's page — from your own system. Additive to the v1 contract. Available on every paid plan.
- New
POST /products/{shopify_product_id}/notifications: queues a campaign (202) for every buyer of the product's downloadable mappings, or, withvariant_ids, of the mappings serving those variants. Optional plain-textmessageof up to 2,000 characters with{customer.first_name},{shop.name},{product.title}and{product.metafields.<namespace>.<key>}; no links.dry_runruns every check and returns the counts, subject and rendered note without sending (200; use a fresh Idempotency-Key per dry run). Costs 10 rate-limit tokens. - New
GET /notifications/{notificationId}: the campaign's status, counts,waiting_for_archiveand a closederrorvocabulary;completedwithpartial: truewhen some sends failed. Campaigns started in the app appear too. - New
POST /notifications/{notificationId}/cancel: cancels a queued campaign (200). It keeps the product's 7-day limit, exactly like cancelling in the app. - New optional
notify_customersobject onPOST /mappingsandPUT /mappings/{id}: queues a notification for the written mapping's buyers after the write commits. A note that breaks a rule about its own text (blank, too long, a bad variable, more than five metafields, a link in the text) is422 invalid_messagewith nothing written; a metafield problem and every other refusal is reported in the newdata.notificationfield (created: false,error), never as a 4xx.data.notificationis present only when the flag was sent; existing responses are unchanged. - One campaign per product per 7 days, across all of its variants and every source, and none while one is still queued or sending:
429 notification_cooldownwithRetry-After(up to seven days) anderror.details.next_available_at. Not the token bucket — do not retry it automatically; schedule the next call atnext_available_at. - At most 5 campaigns per shop queued or sending at once, across every product and every source: a sixth is
429 too_many_active_notificationswitherror.details.limitanderror.details.active_notification_ids, and noRetry-After. Retry once one of them has finished. A dry run is refused the same way; on a mapping write it is reported indata.notification. - One product update email per buyer per shop per 24 hours, across every campaign: a buyer who already got one is skipped when the campaign sends. Skipped buyers are not in
sent_count,failed_countorsuppressed_count. A campaign that skipped every buyer endsfailedwitherror: recipients_recently_notifiedand does not use the product's 7 days. - Before each batch of up to 500 emails the campaign checks the shop again and stops if the subscription or paid plan lapsed, customer emails were turned off, sending was suspended, or Alva switched notifications off. Stopped before anyone was emailed it is
failed(plan_required,email_disabled,notifications_suspendedornotifications_switched_off) and releases the 7 days; stopped later it iscompletedwithpartial: true. A campaign whose every send failed isfailedwithnothing_sentand releases the 7 days too, and one with nobody left to email by the time it sent isfailedwithno_eligible_recipientsand releases them as well. - A campaign whose targeted mapping has a ZIP rebuild in flight waits for it (
waiting_for_archive: true; only a mapping that delivers a ZIP archive makes a campaign wait); a failed rebuild, or one that makes no progress for 60 minutes while building (6 hours while still waiting to start or to retry), counted from the rebuild, not from the campaign's creation, fails the campaign with zero sends and releases the limit. - Eight new error codes:
403 notifications_suspended,404 notification_not_found,409 notification_not_cancellable,422 invalid_message,422 no_downloadable_content,422 no_eligible_recipients,429 notification_cooldown,429 too_many_active_notifications.mapping_not_foundandmultiple_mappings_matchgainerror.details.unresolved_variant_ids/ambiguous_variant_idson this endpoint.
Access update - September 2026
API access is no longer approval-only.
- Every paid plan (Basic, Pro and Enterprise) can use the API. Create keys in the app under Settings → API keys; there is nothing to request.
- On the Free plan the API keys tab is hidden, and existing keys return
402 plan_requireduntil the shop upgrades.
v1 update - July 2026
Additive error-code and response-field additions to the existing v1 contract.
- New
422 withdrawal_consent_requirederror on the order download-urls endpoint: returned when the shop has EU withdrawal-right consent enabled and the order has no consent record yet; download URLs are issued once the customer consents. - New
422 key_limit_reachederror when creating API keys: a shop can hold at most 25 active API keys; revoke one first. - New
409 delivery_not_yet_releasederror on the order download-urls and resend endpoints: returned when the product has a download delivery delay configured and the buyer's files have not unlocked yet. No download URLs are minted and no email is sent until the delay elapses. - New
error.detailsobject on the error envelope: present only on codes that carry caller-safe context. Todaydelivery_not_yet_releasedis the only producer, and it carriesrelease_at, the ISO 8601 instant the downloads unlock. Treat the object as open - new keys may appear without a major version. - New
delivery_pendingandrelease_atfields on the order-status purchase object:delivery_pendingis true while a purchase is still held by a download delivery delay, andrelease_atis the ISO 8601 unlock instant, or null when nothing is pending. - The grant-downloads endpoint now releases held purchases on the order immediately, so a merchant can override a download delivery delay through the API.
v1.0.0 - June 2026
Initial pilot API surface behind approval-only access.
- API keys for approved shops.
- Required idempotency keys on write requests.
- Remote URL asset import, direct uploads, asset listing, asset updates, and asset deletion.
- Flat categories, product mappings, packs, and license-key tags.
- Order assignments that make mapped downloads visible in Shopify customer accounts.
- Order access controls: revoke, restore, grant downloads, and resend email.
- Job and order status endpoints.
- OpenAPI spec and Postman collection downloads.
Versioning policy
The v1 contract is additive-only: new endpoints, optional fields, and new error codes may be added. Breaking changes will use a future /api/v2 path.
API docs
Was this helpful?
Last updated 2026-10-20