If This Then AT://
Powerful automation platform that connects AT Protocol events to webhooks and custom actions.
๐ฏ Community Prototype Directory
Discover ready-to-use blueprint templates created by the community. Prototypes are pre-configured automation templates with customizable placeholders - perfect for getting started quickly without building from scratch.
Browse Prototype DirectoryGet Started
Sign in with your AT Protocol handle to start creating blueprints.
Features
๐ Blueprints
Create Blueprints that define AT Protocol automations. They consist of 2 or more nodes that take an input and perform an action.
๐ Entry Nodes
Create blueprints triggered by:
- Firehose events
- Webhooks
- Zapier actions
- Cron schedules
๐ Processing Nodes
Transform data and control flow:
transform
- Modify datacondition
- Circuit-breakers
๐ค Action Nodes
Execute actions on your data:
publish_webhook
- Call external servicespublish_record
- Create AT Protocol records
๐ Prototype Directory
Browse and use community-shared blueprint templates. Prototypes are reusable templates with customizable placeholders that make it easy to create new automations.
๐งช Testing & Monitoring
Perform one-shot blueprint and node evaluations to test your automation workflows. View recent evaluations of your blueprints with detailed execution logs and results.
Example Blueprint
Here's an example blueprint that automatically reposts any Bluesky posts mentioning your website:
Description: All jetstream created posts that have an embed or at least one link to the base URL of my website.
Node Type: jetstream_entry
Configuration:
{
"collection": ["app.bsky.feed.post"]
}
Payload:
{
"and": [
{"==": [{"val": ["kind"]}, "commit"]},
{"==": [{"val": ["commit", "operation"]}, "create"]},
{
"or": [
{
"and": [
{
"==": [
{"val": ["commit", "record", "embed", "$type"]},
"app.bsky.embed.external"
]
},
{
"starts_with": [
{"val": ["commit", "record", "embed", "external", "uri"]},
"https://ifthisthen.at/"
]
}
]
},
{
"some": [
{"val": ["commit", "record", "facets"]},
{
"some": [
{"val": ["features"]},
{
"and": [
{
"==": [
{"val": ["$type"]},
"app.bsky.richtext.facet#link"
]
},
{
"starts_with": [
{"val": ["uri"]},
"https://ifthisthen.at/"
]
}
]
}
]
}
]
}
]
}
]
}
Description: Create a repost
Node Type: transform
Configuration: n/a
Payload:
{
"record": {
"$type": "app.bsky.feed.repost",
"subject": {
"cid": {"val": ["commit", "cid"]},
"uri": {
"cat": [
"at://",
{"val": ["did"]},
"/app.bsky.feed.post/",
{"val": ["commit", "rkey"]}
]
}
},
"createdAt": {"now": []}
}
}
Description: Publish the record to my repository.
Node Type: publish_record
Configuration: n/a
Payload:
{"val": ["record"]}