asktrix[email protected]

Help center

Install the chat widget

Paste one script tag into your site. Works with any CMS, shop system or framework.

To install the widget, copy the code under Settings → Channels → Installation and paste it before the closing </head> tag on every page of your website.

The code looks like this. Your workspace ID is already filled in:

<script async src="https://asktrix.org/widget.js" data-workspace="YOUR_WORKSPACE_ID"></script>

Reload your site. The chat button appears in the bottom right corner. Send yourself a message: it lands in your Inbox within a second.

Try it before you go live

Next to the code there's Open demo page. It shows your widget on a sample website, so you can check colors and texts without touching your own site.

WordPress, Shopify and other platforms

There's no plugin or app to install. On every platform you paste the same script tag:

Platform Where the code goes
WordPress, WooCommerce Appearance → Theme File Editor, header.php, before </head>. A code snippet plugin such as WPCode works too.
Shopify Online Store → Themes → … → Edit code, layout/theme.liquid, before </head>
Webflow Site Settings → Custom Code → Head Code, then republish
Next.js app/layout.tsx, loaded with next/script and strategy="afterInteractive"
React A small component that appends the script once, rendered in your root component
Plain HTML The template that every page uses, before </head>

The installation page has the exact code for each of these, with your workspace ID filled in.

The widget doesn't show up

Check these in order:

  1. Cache. WordPress and shop systems often serve cached pages. Clear the cache of your site and your CDN, then reload.
  2. The code is on the page. Open your site, view the page source and search for widget.js. If it's not there, the theme or template you edited isn't the one in use.
  3. Allowed domains. If Settings → Channels → Identity & protection → Allowed domains is on, the widget only loads on your main domain and the additional domains under Settings → Workspace → General. Add staging or shop domains there.
  4. Visibility rules. When & where it shows can hide the widget on certain pages, countries or languages. Behavior → Hide when everyone is away and Hide on mobile hide it as well.
  5. Content Security Policy. If your site sends a CSP header, the browser console names the blocked request. Allow https://asktrix.org in script-src and img-src, https://asktrix.org plus wss://asktrix.org in connect-src, and 'unsafe-inline' in style-src (the widget brings its own styles inside its shadow root).

Next steps

  • Pass the name and email of logged-in users with the JavaScript API, so you know who you're talking to.
  • Change color, greeting and launcher under Settings → Channels → Colors & look.

Install asktrix as an app and get push notifications

Install the inbox on your phone or desktop and get notified about new chats, including on iPhone and iPad.

asktrix works as an installable web app. There's nothing to download from an app store: you install it from the browser, and it opens in its own window with its own icon. Push notifications work on every plan.

Install on a computer or Android

Go to Settings → Your profile → Notifications. Under Install as app, click Install.

If there's no button, use your browser's menu:

  • Chrome and Edge (Windows, macOS, Linux, Android): the install icon in the address bar, or the menu → Install app / Add to Home screen.
  • Safari on macOS: File → Add to Dock.

The installed app opens straight into your inbox. Right-click the icon (or long-press on Android) for shortcuts to Inbox, Live and Contacts.

Install on iPhone and iPad

On iOS and iPadOS, push notifications only work in the installed app, not in a browser tab. You need iOS or iPadOS 16.4 or later.

  1. Open asktrix in Safari and sign in.
  2. Tap Share.
  3. Choose Add to Home Screen.
  4. Open asktrix from the home screen icon.
  5. Go to Settings → Your profile → Notifications and tap Enable push.

Do step 5 in the installed app. Enabling push in Safari itself doesn't work on iOS.

Turn on push

  1. Go to Settings → Your profile → Notifications on the device that should get notifications.
  2. Under Push on your devices, click Enable push.
  3. Allow notifications when your browser asks.
  4. Click Send test to check that it arrives.

Push is set up per device. Enable it on every phone and computer where you want notifications. All devices are listed under Registered devices, where you can also remove old ones.

Choose what you're notified about

The table When and how you're notified on the same page sets, per event, whether you get a push, an email or a sound. Events include new messages, new messages while you're away, assignments, mentions and handoffs from Trix.

While you're using asktrix, you get the hint inside the app instead of a push. Turn on Also push while the app is open if you want both.

Push doesn't arrive

  • Blocked. You declined the browser's permission request. Allow notifications for asktrix in the site settings of your browser (the lock icon in the address bar), reload, and enable push again.
  • iPhone or iPad. Push only works in the app from the home screen, with iOS 16.4 or later. Enable it there, not in Safari.
  • Do not disturb. If do not disturb is on in your notification settings, all pushes pause. Test notifications still come through.
  • The app is open. See Also push while the app is open above.
  • Focus mode. Focus or do-not-disturb modes in Windows, macOS, iOS or Android hide notifications.
  • Android battery saver. Exclude your browser or the app from battery optimization, otherwise pushes arrive late.
  • Device shows errors. Remove the device under Registered devices and enable push on it again.

See the visitor's page with LiveLens

How co-browsing works, what the visitor has to accept, what stays hidden, and how to hide sensitive parts of your site.

LiveLens lets you see the page a visitor is on, live, while you chat. You can point at things, and if you allow it, scroll and click for them. LiveLens is part of the Team plan and up.

Turn it on

Go to Settings → Channels → Behavior and find the LiveLens card:

  • LiveLens: your team can ask to see the visitor's page.
  • LiveLens: scroll and click: during a session, your team may also scroll and click on the visitor's page. Pointing always works.

Start a session

  1. Open the conversation in the Inbox. The visitor has to be online.
  2. Click LiveLens in the conversation header.
  3. The visitor sees a request in the chat widget and clicks Allow or Decline. They have 60 seconds to answer.
  4. Once they allow it, you see their page. Your pointer shows up on their screen.

Click Control to scroll and click on their page, if that's turned on. Stop ends the session.

The visitor is always in control

  • Consent every time. Nothing from the page leaves the visitor's browser before they click Allow. There's no way to start LiveLens silently, and consent from an earlier session doesn't carry over.
  • They see it's running. While the session runs, the widget shows a notice with a Stop button. The visitor can end it any time.
  • The request text says what you can do. If scroll and click is on, the request tells the visitor that you can also control the page.

A session follows the visitor when they go to another page in the same tab. It ends when they close the tab, go offline, or after 2 hours at the latest.

What you see and what stays hidden

LiveLens doesn't record a video. It copies the structure of the page (text, layout, styles) and rebuilds it in your browser.

Always hidden:

  • Everything typed into form fields. Inputs, text areas and dropdowns are masked, including passwords, card numbers and addresses.
  • The chat widget itself.
  • Embedded frames from other sites, such as payment forms or videos from another domain.
  • Canvas drawings.

Nothing is stored. asktrix only passes the stream from the visitor to you while the session runs. There's no recording to watch later.

Hide sensitive parts of your site

Add these attributes to your HTML to keep more out of LiveLens:

Attribute Effect
data-asktrix-block The element and everything in it is not sent at all. You see an empty box of the same size.
data-asktrix-mask The text inside is replaced by asterisks.
<div data-asktrix-block>Account balance: €1,240.00</div>
<p data-asktrix-mask>Customer number 4711-2033</p>

Use data-asktrix-block for anything that should never be seen, such as account details or health data.

Customize the texts

The texts of the request, the buttons and the notice can be changed under Settings → Channels → Texts & content → LiveLens.

Set up Trix with your own AI key

Connect Anthropic, OpenAI or another provider, choose models, and see exactly what data is sent to the provider.

Trix, the AI agent, runs on your own AI provider account. You add an API key, the provider bills you for the tokens, and asktrix charges nothing extra for AI. Trix is part of the Start plan and up.

Add a provider

  1. Go to Settings → Trix → AI & providers and click Add provider.
  2. Pick a type:
    • Official API: Anthropic or OpenAI.
    • Popular providers: OpenRouter, Google Gemini, Mistral AI, Groq, DeepSeek, xAI Grok, Azure OpenAI, Together AI, Fireworks AI, Cerebras, Hugging Face, Vercel AI Gateway, Alibaba Qwen and Cohere. Base URL and models are filled in for you.
    • Custom endpoint / proxy: any OpenAI-compatible or Anthropic-compatible API, for example LiteLLM.
  3. Paste your API key. Get an API key next to the field links to the provider's key page.
  4. Check the models. The first one in the list is the default.
  5. Click Test connection.

Only owners and admins can add providers and keys. Keys are stored encrypted and never shown again, only a masked hint.

For Azure OpenAI, replace <resource> in the base URL with the name of your Azure resource and enter your deployment names instead of model names.

Models per task

Under Models per task you choose which model handles what:

Task Used for
AI agent Trix's answers in the widget, and the playground
Writing help Reply suggestions, rephrasing and summaries in the inbox
Translation Live translation in the inbox
Embeddings Vector search over your knowledge. Needs an OpenAI-compatible provider. Without it, Trix uses full-text search.

Automatic uses your providers in priority order with their default model.

Several keys and providers

You can add more than one key per provider. Requests are spread across the keys. If a key hits a rate limit or fails, the next key takes over, then the next provider. Use the arrows to set the provider order.

On Start and Team you can store one key. Business allows several keys for failover.

What is sent to your provider

asktrix sends only what the task needs, and only to the provider you configured. Nothing is sent to other AI services.

When Trix answers a visitor:

  • the last 16 messages of the conversation (visitor, teammates and Trix). Internal notes are not included.
  • the passages from your knowledge that match the question: published help center articles and, on Team and up, your other sources (crawled website pages, uploaded files, snippets, accepted learning notes).
  • your workspace name, the business description and the instructions from Trix → Behavior.

The contact's name, email and other profile fields are not part of Trix's prompt.

Other tasks:

Task What is sent
Writing help and summaries The last 30 messages of the conversation, including internal notes, the visitor's name and the names of teammates
Translation The single message being translated
Embeddings The text of your articles and sources, in small pieces, when they're indexed
Learning notes (Team and up) A resolved conversation that Trix had handed over, so Trix can draft a reusable question and answer
Business description Text from your crawled website or sources, when you let Trix write the description

What your provider does with the data is governed by your contract with them. Check their data retention and training settings, especially with free tiers.

Limits

To protect your budget, Trix counts its answers over 24 hours. By default a single visitor gets up to 20 AI answers, an IP address up to 40, and the whole workspace up to 2,000. A visitor over the limit is handed to your team. When the workspace limit is reached, every new chat goes to your team and owners and admins are notified.

Every AI message in the widget carries an AI badge next to the name (KI in German, IA in French, Spanish, Italian and Portuguese). You can rename your agent and change the widget texts, but not the badge, so visitors always know they're talking to an AI.

Trix doesn't answer

  • No provider or no key. Check Settings → Trix → AI & providers. A key with status Invalid or Rate limited needs attention. Reset status clears it after you've fixed it at the provider.
  • Test the connection. Test connection shows the response time and the model, or the error the provider returned.
  • Plan. Trix is not part of Free.
  • Watch the log. Trix → Log lists every AI run with its outcome.

Email sending and your own SMTP server

Set the sender, send through your own mail server, and set up SPF and DKIM so emails don't land in spam.

asktrix sends emails to your contacts on your behalf: conversation transcripts, campaign emails and double opt-in confirmations. You set the sender and, if you like, your own SMTP server under Settings → Channels → Sender & SMTP. Email is part of the Start plan and up. Only owners and admins can change these settings.

What gets sent

Email When
Conversation transcript When a conversation is resolved, if Send the conversation once resolved is on under Settings → Channels → Sending & signature. Also when a teammate emails a transcript from the conversation.
Campaign emails When you send an email campaign (Team plan and up)
Double opt-in confirmation When a contact is asked to confirm marketing emails

Emails go to the contact's email address. Contacts without an email address don't get any.

Replies to these emails don't come back into the asktrix inbox. They go to your sender address, so use a mailbox that someone reads.

Sender

Under Sender enter a Sender name (for example your shop's name) and a Sender email.

What the recipient sees depends on how the email is delivered:

  • Default delivery (no own SMTP server): the email comes from asktrix's sending address, with your sender name as the display name. Your sender email is set as the reply-to address, so replies reach you.
  • Custom SMTP server: the email comes from your sender email, through your own server.

Use your own SMTP server

With your own server, emails come from your domain, and your mail provider's reputation applies.

  1. Turn on Use a custom SMTP server.
  2. Enter Host, Port, Username and Password from your mail provider.
  3. Port 587 uses STARTTLS automatically. For port 465, turn on Use TLS/SSL.
  4. Click Save SMTP.
  5. Click Send test email. It goes to your own account email.

Your account email needs to be verified before you can save SMTP settings. The password is stored encrypted. The SMTP host must be reachable from the internet; local and private addresses are blocked.

If the test fails, the message names the reason: wrong username or password, no connection, timeout, TLS problem, unknown host, or the server rejected the email. Most providers need an app password or SMTP to be enabled first.

SPF and DKIM

Receiving mail servers check that your server is allowed to send for your domain. Without that, your emails land in spam or are rejected.

With your own SMTP server, set these up at your domain's DNS:

  • SPF: a TXT record on your domain that lists your mail provider, for example v=spf1 include:_spf.google.com ~all for Google Workspace. There can be only one SPF record per domain, so add the provider to your existing record instead of creating a second one.
  • DKIM: your mail provider gives you a key to publish as a TXT or CNAME record. Turn on DKIM signing in your provider's admin panel.
  • DMARC: recommended. Start with v=DMARC1; p=none; rua=mailto:[email protected] on _dmarc.your-domain.com and tighten it once SPF and DKIM pass.

Your mail provider's help pages have the exact values. After changing DNS, wait for it to update, then send a test email and check the headers for spf=pass and dkim=pass.

With default delivery, the emails are sent from asktrix's domain, so you don't need to change your DNS.

Signature

Under Settings → Channels → Sending & signature, turn on Use a signature and enter your text. It's added below every outgoing email.

Import contacts from a CSV file

Prepare the file, map the columns, update existing contacts, and what an import means for marketing consent.

In Contacts, open More options and choose Import from CSV. Drop your file in the dialog, map the columns and start the import.

Prepare the file

  • The first row holds the column names.
  • Save it as UTF-8. Excel: Save as → CSV UTF-8.
  • Up to 10,000 rows per import. Split bigger lists into several files.
  • Every row needs a name or an email address. Rows with neither are skipped.

These fields can be imported:

Field Notes
Name Full name
Email Used to find existing contacts
Phone
Labels Several labels separated by commas, semicolons or |
Company Company name
City
Country Two-letter country code, for example DE or US. Full country names don't work.

Example:

name,email,phone,labels,company,city,country
Jane Miller,[email protected],+1 555 0100,"vip, newsletter",Acme Inc.,Boston,US
Lukas Weber,[email protected],,customer,,Berlin,DE

Map the columns

After you drop the file, asktrix matches columns by their name, also in German (for example E-Mail, Firma, Stadt). Check the mapping under Map columns and change it where needed. Set columns you don't want to — ignore —.

Preview shows the first 5 rows as they'll be imported.

Existing contacts

If a contact with the same email address already exists, it's updated instead of duplicated:

  • name, phone, city, country and company are overwritten with the values from the file. Empty cells don't delete existing values.
  • labels from the file are added to the existing labels.

When the import is done, you see how many contacts were created, updated and skipped.

Marketing consent

Email campaigns only go to contacts with a documented opt-in for marketing emails. Contacts without it are left out automatically, and the campaign's audience preview shows how many that are.

By default, imported contacts get no marketing consent. An email address alone, or one a visitor typed into the chat widget, is not consent either.

If everyone in your file has agreed to receive marketing emails, for example because they signed up for your newsletter, tick I confirm these contacts gave consent to receive marketing emails. before you import. Then:

  • every imported contact with an email address gets marketing consent, with the source Import,
  • your confirmation, the date and your email address are stored as proof,
  • contacts that already had consent keep their existing proof,
  • contacts who unsubscribed stay unsubscribed. Only the contact can reverse that, by confirming a double opt-in email themselves.

The checkbox applies to the whole file. If only some of your contacts agreed, import them in two files: one with the box ticked, one without.

For contacts without consent, select them in Contacts and choose Request consent. They get a confirmation email (double opt-in), and once they click the link, they have consent with the source Double opt-in. On a single contact, Send confirmation email does the same, and Record consent lets you note consent you got elsewhere, for example on a paper form.

Chat campaigns, the messages shown inside the widget, don't need marketing consent. They skip blocked and unsubscribed contacts.

After the import

Imported contacts are listed in Contacts like any other. Each one triggers the contact.created or contact.updated webhook, if you use webhooks.

Export and delete data

Download all workspace data, export or delete a single contact for a GDPR request, and delete conversations or the whole workspace.

Export the whole workspace

Go to Settings → Workspace → Data & export and click Download export. You get one JSON file with all data of the workspace:

  • settings, teammates, teams and invites,
  • contacts with their activity,
  • conversations with all messages, and ratings,
  • help center languages, categories and articles,
  • saved replies, mailboxes, rules and saved filters,
  • campaigns, recipients and templates,
  • Trix settings and sources, and the AI providers (without keys),
  • the activity log.

Passwords, API keys, the SMTP password and other credentials are not included. Uploaded files are referenced by their link, not packed into the file.

Only owners and admins can download the export. Each download is recorded in the activity log.

Export contacts as CSV

In Contacts, open More options and choose Export as CSV. You get a CSV of the contacts in the current view, with the filters you've set. To export only some, select them and click Export in the selection bar.

The CSV has these columns: id, name, email, phone, company, city, country, labels, languages, last_active, created_at, custom_data, marketing_consent, consent_at, consent_source, consent_text and unsubscribed.

Answer a GDPR request for one person

Access request. Open the contact and choose Export as CSV from the menu. That gives you the profile data. For the conversations, open each one from the contact's profile, or use the workspace export and search it for the contact's ID.

Deletion request. Open the contact and choose Delete contact. The contact and all their conversations, notes and data are deleted permanently. To delete several contacts, select them in the list and delete them together. Deleting contacts is for owners and admins only.

Deleting can't be undone. If you need the data for your records, export it first.

Delete all conversations

Under Settings → Workspace → Reset & delete, Delete all conversations removes every conversation, message and rating. Contacts, articles and settings stay. Only the owner can do this.

Delete the workspace

Delete workspace on the same page deletes the workspace with all contacts, conversations, articles, campaigns and settings. Type the workspace name to confirm. Only the owner can do this, and it can't be undone.

If you have a paid plan, the subscription is cancelled at the same time, and you're not charged again. If the cancellation fails, the workspace isn't deleted and you see an error. Try again a little later or write to [email protected].

Your personal account isn't deleted with a workspace. To have your account deleted, write to [email protected] from your account's email address.

Retention

On Free, the inbox shows conversations from the last 30 days, on Start the last year. Older conversations are hidden, not deleted, and show up again when you upgrade. To remove data for good, delete it as described above.

Invite teammates and set roles

Add teammates with an invite link, choose owner, admin or member, and how many seats each plan includes.

Teammates are managed under Settings → Team → Members & teams.

Invite a teammate

  1. Click Add teammate.
  2. Enter their email address and choose a role.
  3. Click Create invite.
  4. Copy the link and send it to your teammate, for example by email or chat.

The link works once and expires after 14 days. Your teammate opens it, signs in or creates an account, and joins the workspace.

Open invites are listed under Pending invites. Copy link gets the link again, Revoke cancels it.

Owners and admins can invite. Only an owner can invite another owner.

Roles

Role Can do
Owner Everything, including changing roles, deleting all conversations and deleting the workspace
Admin Everything in the daily work, plus settings, team, Trix, campaigns, billing and the data export
Member The daily work: answer conversations, write notes, edit contacts and write help center articles. Sees settings, but can't change them.

Members can't:

  • delete conversations or contacts,
  • create, edit or send campaigns (they can look at them),
  • set up Trix: AI providers and keys, knowledge sources, tone and rules, quiet hours,
  • add or remove help center languages or import articles,
  • change workspace, widget, email, inbox and routing settings,
  • invite or remove teammates or edit teams,
  • open Plan & billing and Data & export,
  • manage API keys and webhooks.

Owners and admins can do all of this.

Only owners can:

  • change someone's role,
  • delete all conversations or the whole workspace under Settings → Workspace → Reset & delete.

To change a role, the owner picks a new one in the Role column. A workspace always keeps at least one owner.

Seats per plan

Plan Seats
Free 2
Start 2
Team 6
Business Unlimited

Every teammate and every open invite takes a seat. When all seats are used, revoke an open invite, remove a teammate or upgrade under Settings → Plan & billing.

Remove a teammate

Click Remove next to their name. They lose access right away, and their conversations become unassigned. Their account itself stays, so they keep access to other workspaces they belong to.

Owners can't be removed. Change their role to admin or member first. You can't remove yourself either.

Teams

On Team and Business you can group teammates into teams, for example Sales and Tech, under Teams on the same page. Assignment and incoming rules can then route conversations to a team.

Require 2FA

Owners and admins can make two-factor authentication mandatory for everyone under Security policy. See Turn on two-factor authentication.

Turn on two-factor authentication

Protect your account with a code from an authenticator app, and what to do if you lose your phone.

Go to Settings → Your profile → Sign-in & 2FA and click Enable 2FA. From then on, every sign-in asks for your password and a 6-digit code from an authenticator app.

Any TOTP app works: Google Authenticator, 1Password, Authy, Bitwarden and others. asktrix doesn't send codes by SMS or email.

Set it up

  1. Click Enable 2FA.
  2. Open your authenticator app and add a new account.
  3. Scan the QR code. If you can't scan, use Key for manual entry.
  4. Enter the 6-digit code from the app and click Verify.
  5. Save your 10 recovery codes with Copy or Download, tick I saved these codes somewhere safe and click Done.

The recovery codes are shown only once. Keep them somewhere other than your phone, for example in your password manager.

If Verify says the code is invalid, check that your phone's clock is set automatically. The codes depend on the exact time.

Sign in without your phone

On the code screen, click Use a recovery code and enter one of your saved codes. Each code works once. Under Sign-in & 2FA you can see how many are left.

When you're running low, click Regenerate and confirm with a code from your app. You get 10 new codes, and the old ones stop working.

Lost your phone and your recovery codes

You can't reset 2FA yourself in that case, and neither can the owner of your workspace. Write to us from the email address of your account at [email protected]. We check that the account is yours before we switch 2FA off, so this takes longer than a normal support request.

Turn 2FA off

Under Sign-in & 2FA, click Disable and confirm with your password and a current code (or a recovery code).

If your workspace requires 2FA, you lose access to it until you set 2FA up again.

Require 2FA for your whole team

Owners and admins can make 2FA mandatory under Settings → Team → Members & teams → Security policy → Enforce two-factor authentication.

Teammates who haven't set it up yet are sent to the setup on their next page load. They can't open the inbox or anything else in the workspace until they're done. Setup takes about a minute.

Related

  • Active sessions on the same page lists every device you're signed in on. Sign out all others ends all of them except the one you're using.
  • Changing your password also signs out your other sessions.

Plans, billing and invoices

Upgrade, switch or cancel your plan, find invoices, add a VAT ID and fix a failed payment.

Everything about your plan is under Settings → Plan & billing. Only owners and admins see this page.

Plans

Plan Price per month Seats Conversation history
Free 0 2 30 days
Start $19.99 2 1 year
Team $44.99 6 Unlimited
Business On request Unlimited Unlimited

Prices are net, plus applicable taxes. Prices are listed in US dollars. At checkout, Stripe shows the amount in your local currency, converted at the current rate.

Trix runs on your own AI key on every paid plan, so there are no AI credits to buy. See Set up Trix with your own AI key.

Free trial

If you sign up from the pricing page for Start or Team, you get that plan free for 14 days. You don't need a card for the trial. We email the owners 3 days before it ends. If you don't book a plan by then, the workspace continues on Free.

Upgrade

  1. Go to Settings → Plan & billing.
  2. Click Upgrade, or Switch on the plan you want.
  3. You're sent to Stripe Checkout. Enter your card, billing address and, if you have one, your VAT ID. Promotion codes go in the field on the same page.
  4. After paying you're back in asktrix. The new plan is active within a few seconds.

Payments are handled by Stripe. asktrix never sees your card number.

Business and individual contracts aren't booked online. Write to [email protected] and we set it up for you.

Switch plans, update your card, cancel

Once you have a subscription, Manage billing opens the Stripe customer portal. There you can:

  • switch between Start and Team,
  • change your payment method,
  • download your invoices,
  • cancel the subscription.

When a subscription ends, the workspace goes back to Free. Your data stays: conversations, contacts and articles are kept. Features that Free doesn't include are locked, and the inbox only shows the last 30 days of history until you upgrade again.

Invoices

Stripe emails an invoice for every payment. All past invoices are in Manage billing as PDF.

Invoices go to the address under Billing email on the same page. Leave it empty to send them to the workspace owner. Changing it also updates the address Stripe uses.

VAT ID

Add your VAT ID in Stripe Checkout when you subscribe. It's printed on every invoice. If you need to add or change it later and the customer portal doesn't offer the field, email [email protected].

A payment failed

If a card payment fails, the owners and the billing email get a notice. Stripe tries the payment again over the following days. Your plan stays active during that time.

To fix it, open Manage billing and update your payment method. Stripe then charges the open invoice.

If all retries fail, the subscription ends and the workspace falls back to Free. Book the plan again under Settings → Plan & billing to get everything back. Nothing is deleted in between.

Seats

Seats count teammates plus open invites. When you're at the limit, you can't invite anyone new until you remove a teammate, revoke an invite or upgrade. See Invite teammates and set roles.

Receive events with webhooks

Events, request format, signature check and retries. Available on Team and Business.

A webhook sends an HTTPS POST to your server when something happens in your workspace, for example when a conversation starts or a contact changes. Set them up under Settings → Workspace → API & webhooks → Add webhook.

Webhooks are part of the Team plan (5 endpoints) and the Business plan (25 endpoints). Only owners and admins can manage them.

Events

Event Sent when
conversation.created A conversation starts
conversation.updated Status, assignment or labels of a conversation change
conversation.closed A conversation is resolved
message.created A new message arrives or is sent. Internal notes are not included.
contact.created A contact is saved
contact.updated A contact changes
rating.created A visitor rates a conversation

Send test sends a webhook.test event to check your endpoint. You can't subscribe to it.

The request

Every request is a POST with a JSON body:

{
  "id": "cm3x9…",
  "event": "conversation.created",
  "createdAt": "2026-11-06T09:12:44.120Z",
  "workspaceId": "cm1a2…",
  "data": { }
}

data holds the object the event is about. To see its exact fields, open the webhook, go to Deliveries and look at Sent for any delivery.

Headers:

Header Value
X-Asktrix-Event The event name
X-Asktrix-Delivery The delivery ID. It's the same as id in the body and doesn't change between retries.
X-Asktrix-Signature t=<unix timestamp>,v1=<signature>
User-Agent asktrix-webhooks/1

Answer with any 2xx status within 10 seconds. Redirects are not followed and count as a failure.

Check the signature

Each webhook has its own Signing secret (it starts with whsec_). The signature is an HMAC-SHA256, in hex, of the timestamp, a dot, and the raw request body.

Check it before you trust the request:

  1. Read t and v1 from the X-Asktrix-Signature header.
  2. Reject the request if t is more than 5 minutes away from your server time.
  3. Compute HMAC-SHA256 of <t>.<raw body> with your secret.
  4. Compare it with v1 in constant time.

Use the raw body exactly as received. If your framework parses the JSON first and you serialize it again, the signature won't match.

Node.js example:

import { createHmac, timingSafeEqual } from "node:crypto";

export function isValidAsktrixRequest(rawBody, header, secret) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.trim().split("=")));
  const t = Number(parts.t);
  if (!t || Math.abs(Date.now() / 1000 - t) > 300) return false;
  const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
  const given = String(parts.v1 ?? "");
  return given.length === expected.length && timingSafeEqual(Buffer.from(given), Buffer.from(expected));
}

Rotate creates a new secret. The old one stops working immediately, so update your server right after rotating.

Retries

If a delivery fails (timeout, connection error or a status outside 2xx), we try again after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours. That's six attempts in total. A retry has the same id, so you can skip duplicates.

If your endpoint keeps failing (20 failed attempts in a row, and a delivery has used up all six attempts), the webhook is switched off and the owners and admins of the workspace get a notification. In practice that means hours of failures, not a short outage. Fix your endpoint, then switch the webhook back on with Webhook active.

Delivery log

Deliveries shows the last 30 days per webhook: status, attempts, duration, what we sent and what your server answered. Filter by Failed and use Resend to deliver a single event again.

Limits

  • The endpoint URL must use https:// and be reachable from the internet. Private and local addresses are blocked.
  • Webhooks only fire while your workspace is on a plan that includes them. After a downgrade, your endpoints are kept but receive nothing.

For every event payload and verification code in Node.js, Python and PHP, see the webhook developer docs.