Skip to main content

API late August 2026 improvements (1.6.8)

Sam Critchley
Co-Founder

Further API features, improvements and fixes that shipped to production in late August 2026, on top of the earlier mid August 2026 release.

  • Added the chain option first_transaction_sets_home_and_signup_store, configured through alter-chain and also available on the Chain resource. When it is enabled, a customer's first completed transaction sets their signup store and their home store to the branch business of that transaction's basket. Each store is only filled if it is still empty, and later transactions never change either store. See stores set by the first transaction.
  • Added the email verification webhook types email_verification_otp and email_verification_deeplink to add-webhook, so the delivery of a chain's email verification messages can be configured through the API.
  • Changed the error returned by otp-verify for an incorrect or expired code to verification_code_invalid_or_expired (code 561), replacing the more general password_error_or_non_existent (code 5). Clients which show their own message for an invalid passcode should key on the new error code.
  • Improved the performance of returns which do not supply an original_retailer_basket_code: matching a returned item to its original purchase is now fast even for customers with a very large transaction history, where such requests could previously take tens of seconds. The lookup covers the customer's 2,000 most recent transactions.
  • Improved validation of points_tracker campaign rules, which are now rejected when no action is supplied. This prevents a rule which cannot be applied from being saved, and prevents the error which such a rule caused when a customer's purchase progress was updated.
  • Fixed the survey campaign endpoints so that a request for an inactive or deleted survey is rejected with campaign_not_active (code 449), and a required consent question is only treated as answered when a value is actually supplied. An explicit false still counts as an answer.
  • Fixed Shopify customer synchronisation so that a customer who already exists in Spaaza keeps their existing signup_channel. Only customers genuinely created by the Shopify webhook are recorded as a Shopify signup. See data synchronisation.