> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracklysms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Latest updates, features, and fixes for the Trackly SMS platform

Stay up to date with the latest changes to Trackly SMS.

***

## March 2026

### Consent & Resubscribe API

<Badge>feature</Badge>

Contacts who previously opted out can now resubscribe through a dedicated API endpoint, keyword replies, or the existing contacts API — with full consent tracking and provider-level sync.

* **`POST /v2/contacts/resubscribe`** — Reactivates opted-out contacts with required consent proof (consent method, language, and optional user agent). Validates cooling-off periods, removes provider-level opt-out blocks, and optionally re-enrolls in a welcome journey.
* **START / UNSTOP keyword auto-resubscribe** — When a contact replies START or UNSTOP, the reply handler now automatically reactivates them with consent tracking, rather than requiring manual intervention.
* **Resubscription toggle on sending lists** — New `allow_resubscriptions` and `cooling_off_days` settings on each sending list. When enabled, `POST /v2/contacts` will trigger the resubscribe flow for inactive contacts instead of silently ignoring them.
* **Twilio Consent Management API integration** — For Twilio-provisioned lists, resubscription calls the Consent Management API to remove the carrier-level opt-out, ensuring the contact can actually receive messages again.

<AccordionGroup>
  <Accordion title="Technical details">
    Three-layer opt-out awareness: our database (ListContactBlock removal), provider opt-out list (Twilio Consent API), and carrier network (STOP/UNSTOP keyword handling). Consent fields stored on ListContact and snapshotted in ListContactHistory. Configurable cooling-off period (default 30 days) enforced per-list. Input sanitization and length limits on all consent fields.
  </Accordion>
</AccordionGroup>

### Compliance Engine

<Badge>feature</Badge>

New paid add-on product that gives your audiences two layers of Do Not Call protection — helping you avoid TCPA litigation and stay off regulatory lists.

* **FTC National DNC Registry sync** — Platform-wide nightly download of the full FTC Do Not Call list (\~245M numbers). Contacts on the registry are automatically flagged so you can exclude them from sends.
* **Blacklist Alliance analysis** — On-demand per-audience scan that identifies TCPA litigators, state-level DNC listings, and risk scores. Results appear as compliance badges on the Contact Lookup page, audience editor sidebar, and a dedicated Compliance Analyzer dashboard.
* **Audience filter dimensions** — New `is_litigator` and `state_dnc` filter conditions in the audience query builder, so you can create audiences that automatically exclude high-risk contacts.

<AccordionGroup>
  <Accordion title="Technical details">
    FTC download via SOAP web service with WSDL pre-check, SSRF domain allowlist, and batched delta upserts. Blacklist Alliance REST client with batch splitting and rate limiting. Compliance data stored as fields on Contact model. Billed per-contact via Stripe. Product-gated with upsell fallback for unsubscribed accounts.
  </Accordion>
</AccordionGroup>

### Contact Card (vCard MMS) in Journeys

<Badge>feature</Badge>

A new journey step type that sends your branded contact card as an MMS, so recipients can tap to save your business info directly to their phone.

* Works in both welcome journeys and click trigger flows
* Full editor with form fields for display name, phone, company, note, and a live preview
* Supports macro expansion (e.g., `{{first_name}}`) in all vCard fields
* Billed as 1 MMS segment via existing usage tracking

### Agent Link Shortener

<Badge>feature</Badge>

AI agents can now browse your offer catalog and generate tracked short links during conversations — no manual link management needed.

* **`POST /v2/links/shorten`** — General-purpose link shortener API that works with SMS Offers (TUNE/Everflow tracking preserved) and raw URLs
* **Native agent tools** — `list_offers` and `create_link` execute as Python callables inside the agent runtime, with full audit logging

### AI Agents Subscription Billing

<Badge>feature</Badge>

AI Agents is now a paid add-on product with its own subscription tier and metered LLM cost passthrough.

* Product gating with upsell page for unsubscribed accounts
* LLM cost tracking per conversation turn, charged to the account's AI Agents balance
* Provider/model selector in agent settings (Claude, GPT, Gemini)

### Audience Filters & QoL

<Badge>improvement</Badge>

Expanded audience targeting with new filter dimensions and more flexible logic.

* 4 new filter dimensions: line type, phone validity, ad network source, and conversion count
* Last revenue date (Last Converted) as a time-based filter
* Per-condition AND/OR join operators — mix logic within a group without needing subgroups
* Creatives and offers can now be scoped and managed per sending list
* Contact export from both audience and list views

### GSM-7 Character Normalization

<Badge>improvement</Badge>

Messages containing "invisible" non-GSM-7 characters (smart quotes, non-breaking spaces, em dashes from Word or Google Docs) were silently forcing UCS-2 encoding, doubling segment counts. The platform now auto-normalizes these characters to their GSM-7 equivalents before sending. Emoji and intentional Unicode are left untouched.

### Schedule Log Timezone Fix

<Badge>improvement</Badge>

Schedule execution logs now show two distinct timestamps — **Scheduled** and **Executed** — both displayed in your account's timezone. Previously, a single "Time" column showed the queueing claim time in the browser's local timezone.

### White-Label Resilience

<Badge>improvement</Badge>

Improved white-label domain registration with automatic retry logic and fallback handling. Fixed scheduler reliability for domain provisioning jobs.

### Documentation Redesign

<Badge>improvement</Badge>

Comprehensive docs overhaul: restructured navigation, standardized API endpoint templates, added API playground, new guides for platform limits, message segments, and production readiness.

***

## February 2026

### Signup Workflow Rework

<Badge>improvement</Badge>

Redesigned the account signup flow with streamlined onboarding, improved form validation, and clearer step-by-step progression. Reduced signup-to-first-send time by removing unnecessary steps and adding contextual help.

### Dual-Provider Phone Provisioning

<Badge>feature</Badge>

Added support for provisioning phone numbers through multiple routes, with automatic failover. When the primary route's inventory is unavailable for a requested area code, the system automatically attempts provisioning through the next available route.

### Compliance Fixes

<Badge>fix</Badge>

Fixed white-label banned term retry logic to prevent false rejections during provisioning. The content filter was incorrectly flagging brand names containing common substrings of banned terms.

***

## January 2026

### Import UX Improvements

<Badge>improvement</Badge>

Redesigned the CSV import interface with real-time progress tracking, per-row error reporting, and drag-and-drop file upload. Large imports (100K+ contacts) now show estimated time remaining and can be cancelled mid-import.

### BYOC Webhook Verification

<Badge>feature</Badge>

Added webhook URL verification for Bring Your Own Carrier (BYOC) lists. Before sending is enabled, the system sends a test message and waits for the webhook callback to confirm the integration is working end-to-end. Verification expires after 24 hours and can be re-triggered from the list settings page.

***

## December 2025

### OTP / 2FA Product

<Badge>feature</Badge>

Launched one-time password (OTP) verification as a standalone product. Send verification codes via SMS with configurable expiry (30s-10min), per-number rate limiting, delivery confirmation webhooks, and automatic retry on failure. Available as a separate billing product with its own API key scope.

### Click Triggers

<Badge>feature</Badge>

Added the ability to trigger automated actions when a contact clicks a tracked link. Supported actions include journey enrollment, webhook dispatch, and custom field updates. Click triggers can be configured per-link with optional cooldown periods to prevent duplicate triggers from rapid clicks.

***

## November 2025

### Creative Studio with AI

<Badge>feature</Badge>

Launched AI-powered creative generation using Claude, GPT, and Gemini. Generate, review, and iterate on message templates directly in the dashboard. Supports brand voice customization, A/B variant generation, and compliance pre-screening against carrier content policies.

### Thompson Sampling for Creatives

<Badge>feature</Badge>

Implemented multi-armed bandit (Thompson sampling) for automatic creative selection in campaigns. The system learns which creatives perform best across click-through rate, conversion rate, and opt-out rate, then allocates more traffic to winners while continuing to explore new creatives. Stats update every 6 hours with a 7-day rolling window.

***

## October 2025

### API V2 Launch

<Badge>feature</Badge>

Released the v2 API with full CRUD endpoints for contacts, audiences, creatives, offers, schedules, revenue, and data import. Features include consistent error format with error codes, bulk operations (up to 1,000 contacts per request), cursor-based pagination, and `X-Api-Key` authentication with `trk_` prefixed keys.

### Tiered Billing V2

<Badge>improvement</Badge>

Migrated to tiered per-segment billing: $0.0045/segment for the first 1M segments in a 360-day cycle, $0.003/segment after. Added automatic tier calculation, annual cycle tracking, and real-time usage dashboard. Billing is tracked per-segment (not per-message) to account for multi-segment messages.

***

## September 2025

### Free Tier

<Badge>feature</Badge>

Introduced a free tier with 500 messages per month for new accounts. No credit card required to start sending. Usage resets monthly, and accounts are automatically paused (not deleted) if the limit is exceeded. Upgrade to paid is available at any time from the billing page.

### Terms of Service & Legal Pages

<Badge>feature</Badge>

Added ToS acceptance flow with version tracking, non-dismissible acceptance modal on login, and public Terms of Service and Privacy Policy pages. ToS version changes trigger re-acceptance for all active users.

***

## August 2025

### CM Provider Integration

<Badge>feature</Badge>

Added CM.com as an SMS provider option, expanding multi-provider support. CM routes are available for European and APAC destinations where CM offers better deliverability and pricing.

### BetterStack Alerting

<Badge>feature</Badge>

Integrated BetterStack for infrastructure monitoring with synthetic monitors on all API endpoints, heartbeat monitoring on worker VMs, and escalation policies. Complements existing Discord alerts with PagerDuty-style incident management and on-call scheduling.

***

## July 2025

### Content Filtering

<Badge>feature</Badge>

Added automated content filtering to scan outbound messages for banned terms and compliance violations before sending. Configurable per-account with allowlists for brand-specific terms. Messages that fail content filtering are blocked with a clear error code and the specific term flagged.

### DLR Auto-Removal

<Badge>improvement</Badge>

Implemented automatic contact removal based on delivery report (DLR) failure patterns. Contacts with 3+ consecutive hard bounces (error codes 30003, 30005, 30006) are automatically deactivated to protect sender reputation. Removed contacts are logged with the failure history and can be manually reactivated.

***

## January 2024

### Platform Launch

<Badge>feature</Badge>

Initial release of the Trackly SMS platform with core messaging, contact management, list provisioning, scheduled sends, reply handling, and Discord integration for operational alerts.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="FAQ" icon="circle-question" href="/resources/faq">
    Common questions answered
  </Card>

  <Card title="Support" icon="headset" href="/resources/support">
    Get help from our team
  </Card>
</CardGroup>
