Skip to main content

Setting Up Notification Environments

In Ductape, you can set up credentials for each Environment. This means your sandbox, staging, and production environments can have different credentials, channels, and optionally exclude certain behavior from specific environments.

Example: Creating a Notification Environment

await ductape.notifications.create({
name: "Notify Users",
tag: "notify-users",
description: "Create Notifications",
envs: [
{
slug: 'prd',
push_notifications,
callbacks,
emails,
sms
},
{
slug: 'snd',
push_notifications,
callbacks,
emails,
sms
}
]
});

Notification Credential Interfaces

Push Notifications

FieldTypeRequiredDescription
typeNotifiers.EXPO or Notifiers.FIREBASEYesType of push notifier.
credentialsobjectOptional for Expo, Required for FirebaseFirebase service account details.
databaseUrlstringRequired for FirebaseFirebase realtime database URL.

Expo Example

const push_notifications = {
type: Notifiers.EXPO
};

Firebase Example

const push_notifications = {
type: Notifiers.FIREBASE,
credentials: {
type: "service_account",
project_id: "...",
// other service account fields
},
databaseUrl: "https://project.firebaseio.com"
};

Email Notifications

Ductape supports 5 email providers: SMTP, SendGrid, Mailgun, Postmark, and AWS SES. Configure them by setting the appropriate fields based on your chosen provider.

Common Fields

FieldTypeRequiredDescription
providerEmailProviderYesEmail service provider.
sender_emailstringYesFrom email address.

SMTP Configuration

FieldTypeRequiredDescription
hoststringYesSMTP server host.
portstringYesSMTP port.
auth.userstringYesSMTP auth username.
auth.passstringYesSMTP auth password.
securebooleanOptionalUse SSL/TLS.
tlsobjectOptionalTLS configuration.

SMTP Example

const emails = {
provider: 'smtp',
sender_email: 'noreply@ductape.app',
host: 'smtp.elasticemail.com',
port: '2524',
auth: {
user: 'fikayo@ductape.app',
pass: '***'
},
secure: false,
tls: {
rejectUnauthorized: false
}
};

SendGrid Configuration

FieldTypeRequiredDescription
apiKeystringYesSendGrid API key.

SendGrid Example

const emails = {
provider: 'sendgrid',
sender_email: 'noreply@ductape.app',
apiKey: 'SG.xxxxxxxxxxxxxxxxxxxxx'
};

Mailgun Configuration

FieldTypeRequiredDescription
apiKeystringYesMailgun API key.
domainstringYesMailgun domain.
urlstringOptionalAPI base URL (for EU region, use https://api.eu.mailgun.net).

Mailgun Example

const emails = {
provider: 'mailgun',
sender_email: 'noreply@ductape.app',
apiKey: 'key-xxxxxxxxxxxxxxxxxxxxx',
domain: 'mg.ductape.app',
url: 'https://api.eu.mailgun.net' // Optional - for EU region
};

Postmark Configuration

FieldTypeRequiredDescription
serverTokenstringYesPostmark server token.

Postmark Example

const emails = {
provider: 'postmark',
sender_email: 'noreply@ductape.app',
serverToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
};

AWS SES Configuration

FieldTypeRequiredDescription
regionstringYesAWS region.
accessKeyIdstringYesAWS access key ID.
secretAccessKeystringYesAWS secret access key.

AWS SES Example

const emails = {
provider: 'aws_ses',
sender_email: 'noreply@ductape.app',
region: 'us-east-1',
accessKeyId: 'AKIAXXXXXXXXXX',
secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
};

EmailProvider Enum Values

Enum ValueDescription
smtpTraditional SMTP email server
sendgridSendGrid email service
mailgunMailgun email service
postmarkPostmark email service
aws_sesAmazon Simple Email Service

Callback Notifications

FieldTypeRequiredDescription
urlstringYesCallback URL (use :param for dynamic segments).
methodHttpMethodsYesHTTP method.
auth.headersobjectOptionalKey-value headers.
auth.bodyobjectOptionalKey-value body values.
auth.queryobjectOptionalQuery parameters.
auth.paramsobjectOptionalURL params.

Example

const callbacks = {
url: 'https://test.apicall.com/send-message',
method: HttpMethods.POST,
auth: {
headers: { Authorization: "Bearer token" },
body: {},
query: {},
params: {}
}
};

SMS Notifications

Ductape supports 3 SMS providers: Twilio, Plivo, and Vonage (Nexmo). You configure them by setting the appropriate fields based on the provider.

FieldTypeRequiredDescription
providerSmsProviderYesSMS service provider.
accountSidstringFor TwilioTwilio Account SID.
authTokenstringFor TwilioTwilio Auth Token.
apiSecretstringFor NexmoNexmo API Secret.
apiKeystringFor Plivo/NexmoAPI Key for provider.
senderstringYesSender phone number or ID.

Example

const sms = {
provider: 'twilio',
accountSid: 'ACxxxxxxxxxx',
authToken: 'xxxxxxxx',
sender: '+1415xxxxxxx'
};

SmsProvider Enum Values

Enum ValueDescription
twilioTwilio SMS service
nexmoNexmo (Vonage) SMS service
plivoPlivo SMS service

Notes

  • You can configure one or all notification channels in each environment.
  • Push Notifications support only one type per environment either Expo or Firebase.
  • SMS providers require specific credential fields ensure you supply what's needed based on your chosen provider.

Next Steps