Published on

Svix Changelog April 2025

Authors

Cover image

Svix is the enterprise ready webhooks sending service. With Svix, you can build a secure, reliable, and scalable webhook platform in minutes. Looking to send webhooks? Give it a try!

It's spring in the northern hemisphere, the bees are buzzing, and the flowers are blooming. Which means it's time for the Svix April changelog!

New Terraform provider

We are pleased to announce the new Svix terraform provider, which means you can now manage your Svix account using infrastructure-as-code!

We currently support creating environments, API keys, and event types (including OpenAPI import), updating environment settings, and managing operational webhooks; in addition to managing Svix Ingest sources and endpoints.

Here is an example:

resource "svix_environment" "staging_environment" {
  name = "Staging env"
  type = "development"
}

resource "svix_api_token" "staging_token" {
  environment_id = svix_environment.staging_environment.id
  name           = "Environment token"
  scopes         = ["application:Read", "application:Create"]
}

Environment management APIs

In order to create the aforementioned terraform provider we had to stabilize the Svix environment and authentication token APIs. As part of this effort we are now making them public so everyone can use them! They are not public just yet, but they will be public next week. If you can't wait, contact us, and we can give you early access!

Because these APIs are management APIs, they need to be accessed with the new management API tokens. Normal API tokens are restricted to specific environments, while these API tokens support general account management.

You can create them in the management API keys page on the dashboard.

Management API keys

Email connectors and connector UI improvements

We are adding more connectors every day, and this time we added support for a few email providers: Resend, Loops, and Sendgrid! This means that you can now write connectors that enable your customers to turn a webhook into an email directly from Svix.

We also improved the connector UI to better accommodate all the new connector types we have been adding, and the ones we will be adding soon.

// Example email sending connector
function handler(webhook) {
  webhook.payload = {
    from: 'Your App <notifications@yourdomain.com>',
    to: [webhook.payload.user.email],
    subject: 'Welcome to Your App!',
    html: `<h1>Welcome ${webhook.payload.user.name}!</h1>
           <p>Thank you for signing up to our service.</p>`,
  }

  return webhook
}

FIFO endpoint improvements: better retry management

FIFO endpoints follow the same retry schedule as the rest of Svix. However, because of the FIFO semantics a failure in delivery means that delivery to the endpoint is completely paused.

This behavior is different to how webhooks normally behave and required some additional functionality that we didn't have when this was first launched, namely:

  1. Making it easy to know when the FIFO endpoint will retry next.
  2. Making it possible to get the FIFO endpoint to retry immediately.

We have now added both to the UI.

FIFO retries

Svix CLI login workflow

We added a new login flow to the Svix CLI that lets you approve the CLI session directly from the browser.

The way it works: you run svix login in your terminal which opens the Svix dashboard in the browser. You can then authorize the session in the browser and start using the CLI. This is in addition to the previously supported method of setting the token in the config or an environment variable.

$ svix login
Welcome to the Svix CLI!

How would you like to authenticate?: Login in dashboard.svix.com

Please approve the login in your browser, then return here.
Verification code: 22FM

Better handling of UID locking and client disconnects

Svix employs multiple integrity mechanisms to ensure that messages are sent exactly once including idempotency and eventId de-duplication.

The way the eventId de-duplication works is that if it detects that a message with the same eventId already exists it returns a 409 (Conflict) HTTP error. Though what happens when there are two requests with the same eventId in-flight at the exact same time? In that case the first one will be processed by Svix and the second will get a 423 (Locked) HTTP error.

There were some scenarios, however, such as client timeouts, where the locking mechanism could take a long time to clear, which means that additional retries would return 423 for longer than needed.

We have now reduced the locking period, and implemented smarter lock clearing functionality in order to further reduce the time it takes to have a successful retry.

In practice a tiny fraction of customers and miniscule number of the total requests ever got a 423 returned to them; and an even smaller number of requests hit the conditions required to cause the situation we improved. Though we spent time investigating and solving this, so we wanted to share!

A variety of quality of life improvements

We changed the default region selected in the "create environment" dialog to be based on where you're based. So for example, Europeans will get the European region selected by default, and Americans the US one.

We made multiple improvements to how we handle SSO and SCIM, leading to a much better experience when it comes to provisioning access to your team, and managing your account.

We now support sending test events to disabled endpoints. Before this change, you had to have the endpoint enabled in order for the test event to be delivered which was confusing.

Create environment

Closing words

As I mentioned in the previous update, we have been working on a few large projects that are not ready to be shared just yet. One of them is the terraform provider mentioned above, but there's a much bigger project that we are working on that I can't wait to talk about!

As always, please let us know if you have any feedback on the product, or anything else we can add or build to make your lives easier. A lot of the Svix product came from customer feedback, and we are sure ${next_big_thing} will come from feedback as well. No feedback is too small!


For more content like this, make sure to follow us on Twitter, Github, RSS, or our newsletter for the latest updates for the Svix webhook service, or join the discussion on our community Slack.