Step 5: Program Data Exports and Deliverability Errors

  1. Program Data Exports in TextOut

    1. Administration > Programs > Pencil Icon next to the program name under "Actions"
    2. Click the sixth tab "Data Export"
    3. Click the "Create Export" button
    4. "Select a Type": Select an export type in the dropdown menu
      1. Contact
      2. Contact Datatag
      3. Message
      4. User Statistics
    5. Click "Save Changes"
    6. A "Download" button will appear when it is ready to download.
    7. If you receive an error that the file size is too large, contact Civitech Support.
      1. Note: Also available, Webhooks (Setup: Webhooks) and ETL Syncs (Contact Civitech Support to set this up).

        Program Data Export Types

    8. "Export Conversation Messages": This export contains all messages for all conversations in the Program,  one text per row. The file will contain the following columns:

    • Content constant across all conversations:  WorkspaceId, Workspace, DivisionId, Division, ProgramGroupId, ProgramGroup, ProgramId, Program. 

    • ConversationId: Each conversation with a Contact is given a numerical ID. Sort on this column to see conversations with a single Contact grouped together.
    • ContactUploadedFields: When uploading a Contact File, some fields may be mapped. These mappings will be visible in each row.
    • ContactFirstName: The first name of the Contact uploaded into the Program. This field is required when uploading a Contact List.
    • ContactLastName: This will be populated if uploaded with a Contact List.
    • ContactCellPhone: The number that is being texted.
    • EndpointAreaCode: The area code used when texting the Contact (selected from one of the four the Admin chose when uploading the Contact file).
    • EndpointPhoneNumber: The number used to text the Contact (automatically provisioned based on the area code chosen when uploading the Contact file).
    • MessageId: Each message sent is given a unique numeric ID.
    • CreatedUtc: The timestamp in which the message was sent, displayed in Coordinated Universal Time.
    • MessageBody: Text of the message sent, whether sent by the Texter or Contact.
    • ScriptID: Recommended Replies are given numerical IDs. Sort on this column to see how often a Recommended Reply is being used.
    • ScriptTitle: The title of the Recommended Reply.
    • MessageExternalStatus: Status of the message after leaving TextOut. There are seven possible statuses:
      • Queued - The message is queued for sending
      • Received - The message was received by TextOut
      • Sent - The message was sent by TextOut
      • Delivered - The message has been confirmed as delivered
      • Undelivered - The message has been confirmed as undelivered
      • Unknown - The message status is unknown
      • Failed - The message has failed
    • MessageErrorCode / MessageErrorDescription: If an aggregator or the Contact’s carrier returns a message error, the code and description will appear here. 
    • MessageDirection: Inbound (from the Contact) or Outbound (to the Contact).
    • AuthorUserId / AuthorEmail / AuthorFirstName / AuthorLastName: Information about the Texter who sent the information, pulled from the profile information in TextOut.

b. "Export Conversations"

    • Content constant across all conversations: WorkspaceId, Workspace, DivisionId, Division, ProgramGroupId, ProgramGroup, ProgramId, Program. 
    • ConversationId: Each conversation with a Contact is given a numerical ID. Sort on this column to see conversations with a single Contact grouped together.
    • ContactUploadedFields: When uploading a Contact File, some fields may be mapped. These mappings will be visible in each row.
    • ContactFirstName: The first name of the Contact uploaded into the Program. This field is required when uploading a Contact List.
    • ContactLastName: This will be populated if uploaded with a Contact List.
    • ContactCellPhone: The number that is being texted.
    • Carrier: The carrier identified for the Contact Cell Phone. 
    • AssignedToUserId / AssignedToEmail / AssignedToFirstName / AssignedToLastName: Information about who the conversation is assigned to currently. This can be used to locate which User has a conversation.
    • ConversationStatus: 
      • ConversationStatus_Initial - Initial Outbound unsent
      • ConversationStatus_ReadyToReply - The most recent message is an inbound
      • ConversationStatus_AwaitingInbound - The most recent message is an outbound that is not the Initial Outbound
      • ConversationStatus_Flagged - Flagged
      • ConversationStatus_Closed - Complete
      • ConversationStatus_AwaitingFirstInbound - The most recent message is the Initial Outbound.
      • ConversationStatus_InitialFollowUp - Not currently used as Follow Up Programs are not deployed yet in TextOut.
      • ConversationStatus_ToProvision - Loaded, but not yet provisioned
      • ConversationStatus_Cancelled - Loaded, and then at some point canceled (unprovisioned and not queued for requests)
    • EndpointAreaCode: The area code used when texting the Contact (selected from one of the four the Admin chose when uploading the Contact List).
    • EndpointPhoneNumber: The number used to text the Contact (automatically provisioned based on the area code chosen when uploading the Contact List).

c. "Export User Statistics": Export a .CSV file about Users active in a Program, one row per user. Use this file to pull a snapshot view of the information available on the individual Texters' User's screen. The file will contain the following columns:

    • Content constant across all rows: WorkspaceId, Workspace, DivisionId, Division, ProgramGroupId, ProgramGroup, ProgramId, Program. 
    • UserId / UserEmailAddress / UserFirstName / UserLastName
    • UserSkillLevel
    • UserConversationCountInitiated: Includes the number of initial outbounds sent (excluding power send).
    • UserConversationCountInitial: Number of assigned contacts with status of Initial (Waiting to send initial outbound message)
    • UserConversationCountReady: Number of assigned contacts with status of “Ready”.
    • UserConversationCountFlagged: Number of assigned contacts with status of “Flagged” messages.
    • UserConversationCountComplete: (inclusive of Opt-Outs)
    • UserOutboundsSent: Number of non-initial outbound messages sent by the user, excludes auto reply.
    • UniqueOutboundConversations: The count of unique conversations where user sent a non-initial outbound message, excluding auto reply.

d. "Export Conversation Data Tags": This export contains Data Tags, one per row. If a conversation has multiple Data Tags, including the same Data Tag multiple times, the conversation will appear in multiple rows. Use the time stamp (“LastUpdatedUtc”) to establish the order of the Data Tags. The file will contain the following columns:

    • Content constant across all rows: WorkspaceId, Workspace, DivisionId, Division, ProgramGroupId, ProgramGroup, ProgramId, Program. 
    • ConversationId: Each conversation with a Contact is given a numerical ID. Sort on this column to see conversations with a single Contact grouped together.
    • ContactUploadedFields: When uploading a Contact File, some fields may be mapped. These mappings will be visible in each row.
    • ContactFirstName: The first name of the Contact uploaded into the Program. This field is required when uploading a Contact List.
    • ContactLastName: This will be populated if uploaded with a Contact List.
    • ContactCellPhone: The number that is being texted.
    • DataItemId: Id associated with the Workspace Data Tag
    • DataItem: Scripted Data Tag attached to the Recommended Reply that the Texter has used.
    • LastUpdatedUtc: Timestamp the Recommended Reply was used.
    • DataItemIsFreeText: If the Data Tag is a Free-form Data Tag, a “1” will appear in this column.
    • DataItemValue: The value the Texter enters on the Free-form lines will appear in this column.
    • DataItemGroup: If the Program Admin has selected a Data Item Group for the Data Tag (Scripted or Free-form), the Group will appear here. If they have not selected a Group, it will appear as “Default.”
  1. Understanding Deliverability Error Codes

a. Error Codes can be found in Column X with the Error Description in "Column X"

b. Common Error Codes

    • 99 - Internal Error
      • This is likely caused by an invalid "Dynamic Field" be sure your dynamic field in your text matches exactly to the column name in the Contact List.
    • 40001 - Not Routable
      • The destination is either a landline or a non-routable wireless number and doesn't have messaging capabilities.
    • 40002 - Blocked as spam - Temporary
      • SPAM filter flagged the message. Temporarily halt sending and reassess your recipients to ensure their consent.
      • What can you do? 1. Make sure you are opting-out folks that ask to be opted out. 2. Make sure your 10DLC Campaign had "embedded link" marked as yes. 3. Make sure you aren't using a bitly link
    • 40003 - Blocked as spam - Permanent
      • SPAM filter flagged the message, permanently blocking the originating number. Avoid this by ensuring recipients' consent.
      • What can you do? 1. Contact support to delete the number you were texting from that was blocked to minimize risk of future texts also being blocked. 2. Make sure you are opting-out folks that ask to be opted out. 3. Make sure your 10DLC Campaign had "embedded link" marked as yes. 4. Make sure you aren't using a bitly link
    • 40008 - Undeliverable
      • The recipient carrier rejected the message due to various potential reasons.
    • 40012 - Invalid messaging destination number
      • The destination phone number was rejected by the carrier. Potential reasons include:
        • The number is unowned.
        • The number is deactivated.
        • The recipient lacks credit.
        • The recipient cannot receive short codes (for short code messaging only).
    • 40014 - Message expired in queue
      • The message expired before being relayed by Telnyx. You won't be billed for this. This occurs if your messaging rate surpasses your available SMS throughput.
    • 40318 - Message queue full
      • Monitor and adjust your message rate according to the throughput guide.

c. 10DLC Messaging Delivery Errors: These error codes indicate there was an issue when delivering the sent SMS using either our 10DLC product. The following support articles can be a handy troubleshooting guide for many of these issues:

  • 40016 - T-Mobile 10DLC Sending Limit Reached
    • Explanation: 10DLC (10-Digit Long Code) is a system used by carriers like T-Mobile to manage and regulate A2P (Application-to-Person) SMS traffic. Each brand is assigned a certain throughput limit based on their brand score. This error indicates that you've exceeded the daily message sending limit set by T-Mobile for your brand. The count gets reset every day at midnight PST.
    • Solution: Either wait for the count to reset at midnight PST or review the throughput limits related to your brand score in Telnyx's FAQ to understand the imposed restrictions.
  • 40017 - AT&T 10DLC Spam Message Rejected
    • Explanation: AT&T has identified the content of your message as spam when sent via the 10DLC route. This could be due to various reasons such as the content resembling known spam patterns or the lack of proper opt-in from the message recipients.
    • Solution: Review the content of your message to ensure it doesn't violate any spam guidelines. Make certain that you have appropriate permissions (opt-ins) from all recipients before sending messages. This ensures compliance with best practices and reduces the chances of your messages being flagged.
  • 40018 - AT&T 10DLC Sending Limit Reached
    • Explanation: Similar to the T-Mobile error, this indicates that you've reached AT&T's daily sending limit for your brand on the 10DLC route. This limit is influenced by the brand score assigned to your brand.
    • Solution: Wait for the counter to reset at midnight PST or refer to Telnyx's FAQ to get a deeper understanding of the throughput limits based on your brand score. Adjust your messaging strategy accordingly to stay within the defined limits.

Still need help? Contact Us Contact Us