Handle Canadian campaign registrations
Our UI is now set up to enable Canadian entities to register campaigns through the dashboard. The necessary changes will be made to the API as well in the near future.
Our UI is now set up to enable Canadian entities to register campaigns through the dashboard. The necessary changes will be made to the API as well in the near future.
We've added a password visibility toggle to the login, registration, and change password screens so that you'll be able to see your password if necessary.
We've added a new endpoint for listing the campaigns in an account. For more information, see the documentation for the list campaigns endpoint.
We previously added a metadata field to messages to allow you to pass information from your system when sending a message. However, we forgot to add that to the message webhooks (message.received, message.delivered, message.sent, and message.failed). That will now be included on those webhooks.
Pages where no user was logged in previously used light mode by default, whereas pages with a logged in user would use dark mode. Sorry for burning your eyes. We will now use your system theme everywhere in HQ.
The attachment type field was previously listed as a string in our OpenAPI spec. We've now updated that to be an enum so that it's clear what the possible values are. See the documentation for the attachment type field for more information.
We've now added an endpoint to allow you to delete recordings. This will allow you to remove them from Surge's storage so that you won't be billed for them, or in case you want them deleted for privacy reasons. See the documentation for the delete recording endpoint for more details.
This feature is in private beta. Please reach out to support@surge.app or use the in-product chat to contact support and request access.
Historically we've sent emails directly to our email provider, but we were seeing several issues where their server didn't accept the email and it never got sent. We've now cloned our SMS messaging queue infrastructure for emails so that failed emails will automatically be retried, and we can guarantee that email notifications are delivered at least once.
We now allow you to record your incoming calls. By enabling this feature the call will be recorded and we will send you a recording.completed webhook as soon as the recording has been processed and stored. You can then download the recording.
Please note that you are responsible for compliance with federal and state laws surrounding recording phone calls.
This feature is in private beta. Please reach out to support@surge.app or use the in-product chat to contact support and request access.
You can now export your usage as a CSV. While this won't be a big deal for those of you with single-account projects, for our customers with many accounts, this will allow you to get the breakdown of line items for all of your accounts in a single CSV so that you can easily break down usage by accounts for attributing costs.
Let us know if there's anything else you'd like to see in that CSV or anywhere else you'd like to see similar export buttons.
We added a new endpoint for getting a campaign. This will allow you to check the details of a campaign that you've previously submitted, as well as check the status of the campaign. See the documentation for the get campaign endpoint for more details.
Verifications still require that recipients be able to opt out of receiving messages. In the event that a Verification is created and the recipient has opted out of receiving messages, we will now return an error response with instructions for the recipient to opt back in, rather than failing silently as we did before. An error response will look something like this:
{
"error": {
"type": "opted_out",
"message": "This number has opted out of receiving verification messages. Send START to (801) 555-1234 to opt in again."
}
}For our customers making outbound calls, we can now register your business with the carriers to avoid the "Spam Likely" label on outbound calls.
This feature is in private beta. Please reach out to support@surge.app or use the in-product chat to contact support and request access.
Sometimes you or your customers would rather handle incoming calls asynchronously rather than in the moment a customer calls. We've now shipped voicemail in beta to allow you to receive voice messages from callers.
By enabling voicemail on a phone number, we allow you to provide a greeting message. When someone calls your number, they will hear the greeting and be given the opportunity to record a message for you. We will then send you a voicemail.received webhook to let you know that the voicemail was received and is ready for download.
This feature is in private beta. Please reach out to support@surge.app or use the in-product chat to contact support and request access.
We've added a new endpoint for listing all the contacts in an account. See the documentation for the list contacts endpoint for more details.
We've added a new endpoint for listing all the messages sent and received from an account. See the documentation for the list messages endpoint for more details.
Messages with attachments aren't required to have a message body, and messages aren't required to be associated with a blast. We previously had both fields in our OpenAPI spec and our SDK types show that a string would always be returned, but we have now updated that to allow string or null to reflect the actual behavior of the API.
We've added a new endpoint for listing all the phone numbers in your account. See the documentation for the list phone numbers endpoint for more details.
Whenever changes were needed on a toll-free verification, we displayed that on the phone number page, but we didn't provide a link to allow you to make those changes. We now include a button that links to the form where you can make the necessary changes.
Blasts previously would always be sent from the default phone number on the account sending the blast. We added a from field which allows you to provide the phone number from which the blast should be sent. This should be helpful for users with multiple phone numbers in a single account. See the docs for creating a blast for more details.
We added a blast_id field to the message schema so that anywhere that our customers who use blasts will be able to more easily track all of the messages sent by a blast. See the docs for messages.
Once an SMS autoresponse message was set, the form on the phone number settings page would hide itself when you attempted to change it. This made it impossible to edit the autoresponse message.
We've fixed this issue so that the form remains visible, allowing you to edit it once it's been set.
Previously when an invalid id was passed to the embeddable unread count component, the filters would just be ignored, and the component would show the count of all messages the user could view but hadn't read.
We have now fixed this behavior so that if an invalid filter id is provided, the component will hide the unread count entirely, similar to how it behaves when the user has no unread messages. This change helps prevent confusion so that it won't appear that there are unread messages when the filters are not valid.
We now support attaching custom metadata to messages sent via the API. Like the metadata fields on Contacts and Users, this allows you to store additional information relevant to your application. Metadata can be used for filtering, reporting, tracking, and analytics.
The metadata field allows you to attach up to 50 key-value pairs to a message, with each value being a string up to 500 characters long. For more information, see the documentation for the Create message endpoint.
By default, any links included in messages sent through our platform are shortened to better fit within a single SMS segment. These links are also tracked to provide insights on user engagement. Historically we've only shown statistics about link clicks within our dashboard and the embedded inbox component.
With this update, we've introduced a new link.followed webhook event that notifies you whenever a recipient follows a tracked link. For more information, see the documentation for the link followed webhook.