Product Updates & Release Notes
All notable changes to the RippleTXT platform will be documented in this file.
The format is based on Keep a Changelog, and this project uses calendar versioning.
Organization Provisioning Workflow (/api/create_organization/
):
API Documentation Update:
Enhanced Campaign Sending (send_batch.php
):
campaigns.media_url
are now automatically converted to absolute URLs.Unified Test Sending (send_test_message.php
):
send_message()
helper as live campaigns.send_message() Enhancements:
media_url
and array-based media_urls
parameters.messaging_profile_id
and idempotency keys.Progress & Stats Updates:
campaigns.php
, send_progress.php
) now count both sent and failed messages for accuracy.send_stats.php
updated to include failed sends directly from message_queue
alongside delivery receipts.0%
when only failures occurred; corrected by counting attempted (sent + failed) messages.message_queue.error_message
for visibility.normalize_attachment_urls()
— builds absolute URLs from campaign media paths.http_content_length()
— lightweight HEAD request for media size enforcement.parse_telnyx_error()
— extracts structured Telnyx error codes and messages.send_batch.php
refactored for maintainability and stricter Telnyx compliance.campaigns
for message_type
, media_url
, and messaging_profile_id
:contentReference[oaicite:0]{index=0}.message_queue
for status tracking (queued
, sent
, failed
) with retries and error logging:contentReference[oaicite:1]{index=1}.message_logs
for accurate Telnyx delivery receipts, including message_type
(SMS/MMS):contentReference[oaicite:2]{index=2}.campaigns.php
allowing campaigns to be moved from ACTIVE to COMPLETE status.manage_campaign.php
to support the new complete action alongside archive, restore, and delete.message_logs.php
to export filtered logs for a specific campaign.send.php
) now enforces blacklist rules in addition to opt-outs:opt_outs
or blacklist
are automatically excluded when queueing messages.complete
action in campaign lifecycle.send.php
SQL contact filter to join against blacklist
table in addition to opt_outs
.send.php
updated to guarantee blacklist exclusions occur before queue insertion.blacklist
table.is_internal_user()
logic now checks employee role (rather than null org ID).messages_inbox.js
properly loads phone context and passes it to the blacklist logic.Parsedown
support instructions for rendering changelogs on-site.