Messaging_
Configure Appwrite Messaging providers, topics, and subscribers with Terraform for email, SMS, and push delivery.
2 min read
Messaging integrates email, SMS, and push providers. The Terraform provider exposes providers (credentials and channel configuration), topics (groupings of subscribers for broadcasts), and subscribers (who receives messages on a topic).
See the Terraform Registry for generated schemas: messaging_provider, messaging_topic, and messaging_subscriber. The provider repository lists every type and optional field in source; provider-specific arguments apply only to the matching provider (for example Twilio account_sid, SMTP host and encryption, FCM service_account_json).
Resources
| Resource | Purpose |
|---|---|
appwrite_messaging_provider | Register an email, SMS, or push provider (Sendgrid, SMTP, Twilio, FCM, and others) |
appwrite_messaging_topic | Define a topic for targeting subscribers |
appwrite_messaging_subscriber | Attach subscribers to a topic |
The type argument on appwrite_messaging_provider must be one of the supported provider kinds (for example sendgrid, mailgun, smtp, resend, twilio, vonage, msg91, telesign, textmagic, apns, fcm).
Examples
Providers
resource "appwrite_messaging_provider" "sendgrid" { id = "sendgrid" name = "sendgrid" type = "sendgrid" api_key = var.sendgrid_api_key from_email = "noreply@example.com" from_name = "application"}
resource "appwrite_messaging_provider" "smtp" { id = "smtp" name = "smtp" type = "smtp" host = "smtp.example.com" port = 587 username = "user@example.com" password = var.smtp_password encryption = "tls" from_email = "noreply@example.com"}
resource "appwrite_messaging_provider" "twilio" { id = "twilio" name = "twilio" type = "twilio" account_sid = var.twilio_account_sid auth_token = var.twilio_auth_token from = "+1234567890"}
resource "appwrite_messaging_provider" "fcm" { id = "fcm" name = "fcm" type = "fcm" service_account_json = file("firebase-service-account.json")}Topics
resource "appwrite_messaging_topic" "announcements" { id = "announcements" name = "announcements"}
resource "appwrite_auth_team" "engineering" { id = "engineering" name = "engineering"}
resource "appwrite_messaging_topic" "engineering_alerts" { id = "engineering-alerts" name = "engineering-alerts" subscribe = ["team:${appwrite_auth_team.engineering.id}"]}Subscribers
Attach a target (a user's email, phone, or push target ID) to a topic so it receives messages broadcast to that topic.
resource "appwrite_messaging_subscriber" "user_email" { topic_id = appwrite_messaging_topic.announcements.id target_id = "user-email-target-id"}Topics and subscribers support import by ID where documented; see the Registry for each resource.
Data sources
The appwrite_messaging_topic data source reads a topic that already exists by ID. Use it to attach subscribers without taking ownership of the topic itself in Terraform.
data "appwrite_messaging_topic" "announcements" { id = "announcements"}
output "topic_name" { value = data.appwrite_messaging_topic.announcements.name}See the Terraform Registry for the full attribute list.
Related
Was this page helpful?
Share what worked or what we should fix. Once approved, our agents automatically apply suggested updates to the docs.