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

# Backwards compatibility

> See how API-first UUIDs, feature flags, and additive tables let existing buttons, forms, lists, pages, embed scripts, and custom domains keep working.

The pivot is additive:

* Existing unversioned routes and the older private `/v1/auth` and `/v1/projects` routes remain registered.
* Embedded button script URLs and legacy slugs stay valid.
* Existing records receive UUIDs without changing primary keys.
* Existing lists default to `content_kind: listing`.
* Existing subscriber rows are retained; programmatic subscriptions add confirmation metadata.
* Existing browser form submissions and integrations are unchanged; verified agent form requests use a separate table, inbox route, and feature flag.
* `button.contact/{slug}` remains available when a custom domain is attached.
* New public and protocol routes are ordered before legacy catch-all rendering.

All new product verticals default off except the API v1 foundation and public discovery. Roll back behavior by disabling a flag before rolling back code. Additive tables may remain safely in place while traffic is returned to legacy paths.


## Related topics

- [API-first architecture](/concepts/api-first.md)
- [Changelog](/changelog.md)
- [Update a button (PUT compatibility)](/api-reference/buttons/update-a-button-put-compatibility.md)
- [Update a form (PUT compatibility)](/api-reference/forms/update-a-form-put-compatibility.md)
- [Update an app instance (PUT compatibility)](/api-reference/apps/update-an-app-instance-put-compatibility.md)
