A store always has its Tringify address and can connect custom domains. A domain's status says whether its DNS is verified (pending, active, failed); connection_status says whether it serves the store over HTTPS. A domain that is never verified is removed after 7 days, and unverified_expires_at says when.
When a merchant lets Tringify manage a root domain's DNS, its zone appears under DNS zones and its records can be edited here. Records Tringify keeps for the storefront connection and email sending are returned with editable: false and cannot be changed. Adding, verifying and removing domains, and turning DNS management on or off, stay in Store Admin.
Endpoints#
List domains
List the store's custom domains.
Returns custom domains with their verification status, HTTPS connection status, DNS management and storefront role. The store's Tringify address is returned as subdomain. A domain that was never verified carries unverified_expires_at, when it is removed unless verified.
Query parameters
| Name | Type | Description |
|---|---|---|
page
|
integer |
Page number. |
per_page
|
integer |
Page size, bounded by the returned limits. |
search
|
string |
Search domain names. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
400DOMAIN_SEARCH_TOO_LONGThe search exceeds the live maximum.
Get a domain
Get one custom domain.
Includes the DNS records the domain needs while it is pending.
Path parameters
| Name | Type | Description |
|---|---|---|
domainId
required
|
string |
Domain id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
404DOMAIN_NOT_FOUNDThe domain does not belong to this store.
List DNS zones
List the DNS zones Tringify hosts for the store.
A zone exists for each root domain whose DNS the merchant chose to manage with Tringify. Each zone lists its nameservers and records.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
Get a DNS zone
Get one hosted DNS zone with its records.
Records Tringify manages for the storefront connection and email sending are marked editable: false.
Path parameters
| Name | Type | Description |
|---|---|---|
zoneId
required
|
string |
DNS zone id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
404DOMAIN_NOT_FOUNDThe zone does not belong to this store.
Add a DNS record
Add a record to a hosted DNS zone.
Supported types are A, AAAA, CNAME, MX, TXT, CAA and SRV. Names are within the zone (@ is the root). A zone holds at most 200 records. Records Tringify manages for the storefront and email cannot be changed, and a record that conflicts with another at the same name is refused. The change is queued and applied within seconds; the zone's pending flag is true until then.
Path parameters
| Name | Type | Description |
|---|---|---|
zoneId
required
|
string |
DNS zone id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
type
required
|
string |
Record type. |
name
required
|
string |
Record name within the zone; @ for the root. |
content
required
|
string |
Record value. |
ttl
|
integer |
Time to live in seconds; 1 means automatic. |
priority
|
integer |
Priority, for MX and SRV records. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
404DOMAIN_NOT_FOUNDThe zone does not belong to this store.
-
409DOMAIN_DNS_BUSYAnother change to this zone is still being applied; retry shortly.
-
409DOMAIN_DNS_RECORD_CHANGEDThe record changed since it was read, or no longer exists.
-
409DOMAIN_DNS_RECORD_CONFLICTAnother record at this name conflicts.
-
403DOMAIN_DNS_RECORD_PROTECTEDTringify manages this record.
-
400DOMAIN_DNS_RECORD_LIMIT_REACHEDThe zone already holds the most records it can.
-
409DOMAIN_DNS_ACTION_UNAVAILABLEThe zone cannot take record changes in its current state.
Update a DNS record
Change a record in a hosted DNS zone.
Supported types are A, AAAA, CNAME, MX, TXT, CAA and SRV. Names are within the zone (@ is the root). A zone holds at most 200 records. Records Tringify manages for the storefront and email cannot be changed, and a record that conflicts with another at the same name is refused. The change is queued and applied within seconds; the zone's pending flag is true until then. Send modified_on from the record you read to refuse the change if someone edited it since.
Path parameters
| Name | Type | Description |
|---|---|---|
zoneId
required
|
string |
DNS zone id. |
recordId
required
|
string |
DNS record id, from the zone's records. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
type
required
|
string |
Record type. |
name
required
|
string |
Record name within the zone; @ for the root. |
content
required
|
string |
Record value. |
ttl
|
integer |
Time to live in seconds; 1 means automatic. |
priority
|
integer |
Priority, for MX and SRV records. |
modified_on
|
string |
The record's modified_on when you read it. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
404DOMAIN_NOT_FOUNDThe zone does not belong to this store.
-
409DOMAIN_DNS_BUSYAnother change to this zone is still being applied; retry shortly.
-
409DOMAIN_DNS_RECORD_CHANGEDThe record changed since it was read, or no longer exists.
-
409DOMAIN_DNS_RECORD_CONFLICTAnother record at this name conflicts.
-
403DOMAIN_DNS_RECORD_PROTECTEDTringify manages this record.
-
400DOMAIN_DNS_RECORD_LIMIT_REACHEDThe zone already holds the most records it can.
-
409DOMAIN_DNS_ACTION_UNAVAILABLEThe zone cannot take record changes in its current state.
Delete a DNS record
Remove a record from a hosted DNS zone.
Records Tringify manages cannot be removed. The change is queued; the zone's pending flag is true until it is applied.
Path parameters
| Name | Type | Description |
|---|---|---|
zoneId
required
|
string |
DNS zone id. |
recordId
required
|
string |
DNS record id, from the zone's records. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
404DOMAIN_NOT_FOUNDThe zone does not belong to this store.
-
409DOMAIN_DNS_BUSYAnother change to this zone is still being applied; retry shortly.
-
409DOMAIN_DNS_RECORD_CHANGEDThe record changed since it was read, or no longer exists.
-
409DOMAIN_DNS_RECORD_CONFLICTAnother record at this name conflicts.
-
403DOMAIN_DNS_RECORD_PROTECTEDTringify manages this record.
-
400DOMAIN_DNS_RECORD_LIMIT_REACHEDThe zone already holds the most records it can.
-
409DOMAIN_DNS_ACTION_UNAVAILABLEThe zone cannot take record changes in its current state.
Webhook events#
Subscribe to domains/create, domains/update and domains/delete to follow custom domains. An update is sent when verification, the HTTPS connection, the storefront, the primary domain or a language or country pin changes; a delete names why: removed, expired (never verified in 7 days) or claimed (the domain's owner proved control in another store). Events commit with the change.
Domain added
Fired when a custom domain is added to the store. New domains start pending until their DNS is verified.
Payload fields
| Field | Type | Description |
|---|---|---|
domain.id |
string |
Always present |
domain.domain |
string |
Selectable in the Payload builder |
domain.status |
string |
Selectable in the Payload builder |
domain.connection_status |
string |
Selectable in the Payload builder |
domain.dns_management |
string |
Selectable in the Payload builder |
domain.storefront_id |
string |
Selectable in the Payload builder |
domain.is_primary |
boolean |
Selectable in the Payload builder |
domain.role |
string |
Selectable in the Payload builder |
domain.default_country |
string |
Selectable in the Payload builder |
domain.default_locale |
string |
Selectable in the Payload builder |
domain.verified_at |
string |
Selectable in the Payload builder |
domain.unverified_expires_at |
string |
Selectable in the Payload builder |
domain.created_at |
string |
Selectable in the Payload builder |
domain.updated_at |
string |
Selectable in the Payload builder |
Domain updated
Fired when a custom domain changes: verified, failed or disabled, assigned to or removed from a storefront, made primary, or pinned to a country. The payload carries the domain as it is now.
Payload fields
| Field | Type | Description |
|---|---|---|
domain.id |
string |
Always present |
domain.domain |
string |
Selectable in the Payload builder |
domain.status |
string |
Selectable in the Payload builder |
domain.connection_status |
string |
Selectable in the Payload builder |
domain.dns_management |
string |
Selectable in the Payload builder |
domain.storefront_id |
string |
Selectable in the Payload builder |
domain.is_primary |
boolean |
Selectable in the Payload builder |
domain.role |
string |
Selectable in the Payload builder |
domain.default_country |
string |
Selectable in the Payload builder |
domain.default_locale |
string |
Selectable in the Payload builder |
domain.verified_at |
string |
Selectable in the Payload builder |
domain.unverified_expires_at |
string |
Selectable in the Payload builder |
domain.created_at |
string |
Selectable in the Payload builder |
domain.updated_at |
string |
Selectable in the Payload builder |
Domain removed
Fired when a custom domain is removed — by a member, after staying unverified for 7 days, or when its owner claims it from this store.
Payload fields
| Field | Type | Description |
|---|---|---|
domain.id |
string |
Always present |
domain.domain |
string |
Selectable in the Payload builder |
domain.reason |
string |
Selectable in the Payload builder |