API late August 2026 improvements (1.6.8)
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_otpandemail_verification_deeplinkto 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 generalpassword_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_trackercampaign rules, which are now rejected when noactionis 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 requiredconsentquestion is only treated as answered when a value is actually supplied. An explicitfalsestill 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.