Data Retention

Last updated: October 29, 2026

The short version

  • Your message history stays while your account is open, because the inbox and logs are built on it.
  • Opt-outs are kept long enough to keep honoring them.
  • When you close your account, we delete your data 30 days later, and always within 90 days of closing.

How long TextKit keeps each kind of data, and why. "Deleted" means removed from our production systems; backups are overwritten on their normal cycle after that.

DataKept forWhy
Message content and mediaLife of the account, or until you delete or redact the message through the API, or ask us to. Free tier: 30 days (see below)Message history, the shared inbox, and support
Message metadata and delivery receiptsLife of the account, or until you delete the message (a redacted message keeps its metadata, with the receipt's quoted text cut). Free tier: 30 daysDelivery logs, billing disputes, abuse investigations
Messages blocked by the content screen (up to 320 characters)Life of the account. Free tier: 30 days in your log; the review record is keptReview of content-screen decisions, and so your log shows the attempt
Link checks: for each kind of message and link domain from a registered number, whether its links passed and the domain they led to7 daysTo check each kind of message's links once, not on every send
Short links: the original link, the message it was sent in, and its open counts (total, first and last open, and the kind of device; never an IP address or user agent)As long as the message it was sent in. Free tier: 30 days with itTo send people to the link and report opens to you
Link domains you add for short links (the domain, its verification value and DNS check results)Until you delete the domain, or the account closesTo serve your short links on your own domain
Review of new kinds of message (an account's first 30 days of live sending): each held message, to send once approved; for each kind, up to 320 characters of its first message, how many were held, and our decision with its reasonHeld messages until we decide, at most 3 days (each is also in your message log as a blocked message, kept like the row below); the record of each kind and decision for the life of the accountTo review new kinds of message before they go out, and to show what we decided and why
The registration check's answer for each kind of message from a registered number: whether it matches the registration, whether it is promotional, and a one-sentence reason (never the message text)Life of the account, or until the registration or our classifier changes and the kind is checked againSo each kind is checked once, and to show why a kind was refused or held
Messages refused before sending for any other reason (opt-out, quiet hours, missing opt-in, unregistered sender, allowance, spend limit, credits, a closed or suspended account), with their text and the reasonLife of the account, or until you delete the message or ask us to. Free tier: 30 daysSo your log shows every attempt and why it was not sent
Daily counts of blocked messages by reasonLife of the accountYour compliance reporting
The event log (the events your webhooks receive, viewable in the console)Life of the account, or until you delete the message an event is about (redacting a message empties its text in its events). Free tier: 30 daysDebugging and replaying webhook events
Conversations (the thread view of messages with one number, and its last message preview)Life of the account. Free tier: 30 days after the last message in the threadThe shared inbox
Your quiet-hours and re-confirmation settings, and the record that you imported opt-outs from a previous provider (counts only) or confirmed there were noneLife of the accountAccount settings; the audit log records each change
Opt-out and opt-in records, including the registration each opt-in was given for, opt-in proof you record (through the API or a contact import) or that a sign-up on an opt-in page we host for you records (the request, and the YES reply that confirms it), and each number's subscription preference per topicWhile the account is open, and at least 4 years after the last message to that number. Deleting a contact does not delete these: they belong to the phone numberTo keep honoring opt-outs and topic preferences, and to answer TCPA claims
Re-confirmation questions: when we asked a number to confirm it still wants your marketing, the answer or its absence, and the one message held while we waited (also in your message log as a blocked message)With the opt-in records above: at least 4 years after the last message to that numberTo show what was asked and answered before marketing resumed
Contacts (phone number, name, email, company, state, tags, custom fields, notes, source, list memberships, the record's id in a connected tool), lists, segments, subscription topics, and import records (file name, who ran it, row counts)Life of the account, or until you delete themThe address book, broadcast audiences, and merge fields
Connected tools (settings, the encrypted credential or approved access, the ingest token's fingerprint, sync counts)Until you disconnect the tool, or the account closesKeeping contacts and lists in step with your other tools
Which broadcasts a number was included in, and each broadcast's recipient list and resultsLife of the accountContact history and broadcast reporting
Verification attempts (the phone number or email address a code went to, the app name, and the outcome)Codes expire after 10 minutes and are only ever stored hashed; outcomes, with the number or address, kept for the life of the accountBilling and fraud prevention
Lookup resultsCached for 24 hours. A message sent while a result is cached keeps the recipient's carrier name as part of its metadataCost and speed; delivery logs
Which mobile carrier a number you text is on (the number and the carrier only, not who sent to it)30 daysCharging the right carrier fee without a new lookup for every message
Customer records (customers API) and per-customer usage countsLife of the account, or until you delete the customer (usage counts and attribution on past messages stay with the message history)Attributing traffic and usage to the businesses you send for
Automation events you send us (event name, phone number, your user id, properties)30 daysStarting and advancing your automations; showing recent events in the console
Abandoned checkouts, orders and shipments already seen from a connected store (the store's id for each and when we saw it, no phone number)14 daysUsing each cart, order and shipment at most once
Automation runs (recipient, the event properties that started the run, steps taken, why it ended)Until the run ends, then 30 days. A run ends after at most 90 daysRunning the flow; showing you what each run did
Automation flows (steps and message text) and the links between your user ids and phone numbersLife of the account, or until you delete the flow; a user id's link until you unlink it through the APIRunning your automations
Recurring schedules (recipient phone number, message text, repeat rule and time zone)Life of the account, or until you delete the schedule. A paused or finished schedule is kept until you delete itSending each occurrence
The record of a recurring schedule's occurrences (date, outcome, message id; never the message text)The most recent 90 occurrences of each schedule, deleted with the schedule. Messages a schedule sent are ordinary messages (first row)Showing you what each occurrence did; making sure an occurrence is sent only once
API request logs30 days, and at most the newest 10,000 requestsDebugging and security
Session recordings of the website and console (with consent; everything typed and all console text masked)30 daysFinding what is confusing or broken
Message fingerprints by sending number (a hash of each live registered message's masked wording, never the text or the recipient)3 daysNoticing one message spread across many numbers or accounts
Numbers you released while carriers were filtering them (counts only), and a hold on new numbers when one was replacedUntil our team lifts the hold, or the account closesNoticing a filtered number being swapped for a new one
API keys: a keyed hash to look each one up, and an encrypted copy so your admins can view it in the consoleThe hash: life of the account. The encrypted copy: until the key is revoked or rolled, or the account closesSigning your requests in; showing your admins the key again
Live API key activity: the countries each live key has been used from, its requests per day, and when we last alerted about it or paused itRequests per day: 14 days. Countries: until the key is revoked or the account closesTelling you, and pausing the key, when it looks stolen
The browsers each person signed in to the console from (a random identifier, browser type, approximate location from the IP address, first and last seen)Until that person's sign-in account is deleted; at most the 20 most recent per personEmailing you about a sign-in from a browser we have not seen
Account audit log (who changed keys, team, webhooks, spend limits, numbers, consent, topic preferences, contact imports, lists, segments, topics, connected tools, settings, automations, recurring schedules, who approved or denied a command-line sign-in and the machine name it reported, closing the account, and from which IP)Life of the account; deleted with itSecurity and accountability
App connection requests (the name the app gives itself and the address it returns to) and the one-time approval codesRequests: 15 minutes, or until approved or denied. Codes: 10 minutes, used once, stored only as hashes. The API key a connection creates is never stored in eitherLetting you connect apps, such as AI assistants, to your account
Apps registered to connect (the name and return addresses an app registered)Kept, so connections keep workingRecognizing the app on the next connection
Command-line sign-in requests (the machine name the tool reports and the IP address it asked from)10 minutes, or until the request is approved and collected, or denied, if sooner. The API key the sign-in creates is never stored in the requestLetting you approve a terminal's sign-in
Delivery statistics (counts by day, carrier, sending number, destination country, message category, customer, message tag, and failure code)Life of the account; hourly detail 9 daysDeliverability reporting and degradation alerts
Opt-out rate counts per registration (messages sent and opt-outs, by hour; counts only)48 hoursOpt-out rate warnings and marketing pauses
Daily traffic counts per account, registration and sending number (messages sent, delivered, filtered and opt-outs; counts only)35 daysAbuse monitoring: volume alerts, and the carrier and new-account daily caps
Strikes (the kind of violation, the registration, a one-way hash of the person's number, the template's fingerprint and one line of evidence; never message text)30 days, the 20 newestThe automatic pause and our team's review (Messaging Policy §9)
Complaints (the kind of complaint, our number, its registration, a one-way hash of the person, and whether it came by reply or report; never the reply's text)90 daysThe enforcement ladder (Messaging Policy §9)
Enforcement standing per registration (warning, half speed or paused, with the reasons and when)Until our team moves it back; each change stays in your audit logApplying the step and showing it to you
Abuse reports from our report form (the number reported, the reporter's phone number, what happened and any note, the account it matched)1 yearInvestigating, and stopping the texts (Messaging Policy §10). Never shown to the business reported
Abuse-limit records: which of your numbers texted a person, and the people texted each day, kept as one-way hashes of the number, never the number itself2 daysThe per-person limits and the new-account daily cap
A marketing pause on a registration (when, and the rate that caused it)Until our team resumes it; the pause and the resume, with its reason, stay in your audit logEnforcing the pause and showing it to you
Account usage metrics (message counts per hour and day, first-send times)Daily counts 120 days; hourly counts until reported (about an hour); first-send times for the life of the accountBusiness reporting (Privacy §8)
TextKit Agent conversations (your questions and its answers)Not stored by us: kept in your browser (the 20 most recent) until you clear them or sign out. A count of questions per person, kept to limit cost and abuse, is deleted within about two daysAnswering questions about the docs
Requests to our public pages from self-identified AI crawlers and agents (counts per day, by the bot's name and the page path; no personal data)400 daysLearning how AI tools read our site
Webhook delivery logs (status code, response time, and the first 2 KB of your endpoint's response)30 daysDebugging your webhook integration
A message's status callback URL (when you set status_callback on a send)Until that message's final status is sent to it, or the account closesSending that message's status to the URL you gave
Undelivered webhook events (a reference to the event, not a second copy of it)30 days, or until you replay or dismiss themRecovering events your endpoint missed
Brand and campaign registration details (including the example messages and description you write, and draft examples we suggest until you replace or confirm them), website check results, and the copy of what was filed for carrier review each time you submit (with your acknowledgment of the fee terms)Life of the registration, plus 1 year. A registration has ended when it is rejected and not rechecked, when you release it, or when the account closes; a year after that, a daily job deletes it and its filed copiesCarrier and registry requirements; showing what the carriers reviewed
The business verification record for each business you register, or that the carriers' approval of your toll-free verification verifies (then recorded from that form, with the verification it came from): the authorized representative you name, each signed business attestation (the exact statement, the name and title typed, who signed it and how, the IP address, browser and time) and our decision with its reasonLife of the account, plus 1 year. A signed attestation is never changed; a new signature is a new recordCarrier and registry requirements; proving who signed for the business and what they agreed to
A hosted opt-in page's settings (its address, on or off, how many confirmed sign-ups it has had, and for a toll-free program's page the business name, use case, website and contact email it shows); the sign-ups themselves are kept with the opt-out and opt-in records. A sign-up waiting for its YES reply is also held on its ownA registration's page: life of the registration, plus 1 year, deleted with it. A toll-free program's page: life of the account. Turning a page off stops sign-ups but keeps its address and records. A sign-up waiting for its YES: 7 days (the request stays in the opt-in records)Hosting the page and showing you its status
Suggestions read from your website when you ask us to fill in a registration, or when we fill in a toll-free verification form (business details and page addresses; never the pages themselves)About 10 minutes; cleared within the hourSo that asking again does not read your site a second time
Texting plans made on our public plan page (the website address, the business details read from its public pages, and our suggestions; never the pages themselves, and not who asked)About 10 minutes; cleared within the hour. Request counts per network address, kept to limit abuse, are deleted within about two daysSo that asking again does not read the site a second time
Codes from our public try page (the code, salted and hashed, and your mobile number as a one-way hash, never the number itself)Deleted when used, otherwise about 10 minutes; cleared within the hour. Counts per network address and per hashed number, kept to limit abuse, are deleted within about two daysProving you hold the phone before we text it a sample
A phone number verified on our public try page, waiting for the account you create nextRead once and deleted when your account is created, otherwise deleted after about 30 minutesStarting your account with your phone already verified
Toll-free verification forms and their history (what you submitted, what our team filed, and the carriers' answer)Life of the account, plus 1 yearCarrier requirements; showing what the carriers reviewed
Each phone number's registration status and its history (status changes and the registration it is linked to), and the review items our team works from (registration submissions, live-access requests, requests for a toll-free number, a short code, or a local number in an area code you chose, reviews that are running long)Life of the account. When the account closes, the status history is kept with the registration details (1 year after closing); review items are deleted with the account, except our own follow-up of the closing itself (deactivating registrations, releasing numbers), which is kept at most 1 yearShowing you where a number stands; reviewing and following up on your registration
Account dataLife of the account, then up to 90 days (deleted from 30 days after closing)Running the account
Product update subscriptions (email address, sign-up source, confirmation and unsubscribe dates)Until you unsubscribe or ask us to delete it; after you unsubscribe we keep the address only as a do-not-email record, unless you ask us to delete itSending the updates you asked for, and honoring unsubscribes
Billing records (credit purchases, the credit ledger, registration fees and their invoices, monthly statements)7 yearsTax and accounting law
Fraud and abuse signalsAs long as needed to protect the networkPreventing repeat abuse

Free tier

On the free tier (an account that has never added credits), the message log, the event log and conversations older than 30 days are deleted by a daily job, as the pricing page says. Nothing else changes: opt-out and opt-in records, registration details, billing records, daily blocked- message counts and the audit log are kept as the table says. Adding credits moves the account to the paid plan, which keeps its logs for the life of the account; logs already deleted are not restored.

When an account closes

The account owner can close the account in the console (Settings), or ask us to by emailing support@joinsimplesms.com. Closing stops all sending at once, revokes the account's API keys and releases its phone numbers.

We then wait 30 days, so that a mistaken closure can be reversed by contacting us; until then the account's people can still sign in to read and export its data. After that we delete the account's data: message content and metadata, contacts, logs, the audit log, settings and the sign-ins of the owner and everyone on the team. This is always done within 90 days of closing. We keep only:

  • registration details and the copies of what was filed, for 1 year after closing;
  • opt-out and consent records, for at least 4 years after the account's last message;
  • billing records, for 7 years;
  • fraud and abuse signals, for as long as needed to protect the network;

and anything the law or a valid legal hold requires.

Deleting sooner

Customers can ask us to delete specific messages, contacts, or all of their data at any time by emailing privacy@joinsimplesms.com. Message recipients can use the process in Privacy §9.

When we delete one phone number's data from an account on request, we remove the messages to and from it, the conversation with it, the events about those messages, the contact record, the opt-in evidence, its rows in broadcast recipient lists, its automation links, runs and events, and its verification attempts. We keep the number's opt-out record and the entries that prove it, so the opt-out keeps being honoured; counts that carry no number; and the account's audit log, where the deletion is recorded with the number's last four digits only.

You can also delete or redact one message yourself through the API (DELETE /v1/messages/{id} and POST /v1/messages/{id}/redact), once it has been delivered, failed or received. Both take effect at once.

  • Deleting removes the message; the events about it and any webhook retries of them; the request and response bodies of the API request logs that carried it (the log rows stay, without them; any the search misses expire with the logs within 30 days); the saved reply to a repeated request that sent it, found through that request's log within 30 days of sending; the text of a scheduled send's queue record; and its place in the conversation preview (a conversation with no messages left is deleted).
  • Redacting keeps the message and its metadata (numbers, status, timeline, segments, price and delivery result) and removes its text and media from the same places, including the start of the text that a carrier's delivery receipt quotes, now and on any later receipt.

Either way we keep: opt-out and consent records; usage, billing and delivery statistics, which carry no text; a broadcast's result for that recipient (its outcome and price); the account's audit log, which records the deletion or redaction with the other number's last four digits and never the text; text you saved yourself, such as a template, a schedule, a broadcast or an automation; and our own review records, kept as the table above says: messages the content screen refused (up to 320 characters) and the first message of each new kind of message we reviewed, with our decision. A message that is the proof of an opt-out or opt-in (the reply that recorded it, or the message an opt-in's proof names) is part of that consent record and is kept as long as the record is. While our team is reviewing the registration a message was sent under, or the account is suspended, its messages cannot be deleted or redacted until the review ends, so the review sees what was sent. Copies in backups are overwritten on their normal cycle.

When we delete one email address's data from an account on request, we remove the verifications whose codes went to it (and, for one that was first texted, its pointer by number) and the verification events that carry it. The audit log records the deletion with the address's domain only.