REFRACT Notification
REFRACT Notification is the shared notification layer for the REFRACT Platform. It routes email notifications for REFRACT Delivery and REFRACT Workflow through either REFRACT Shared Services ACS or your own Azure Communication Services instance.
REFRACT Notification is the cross-cutting notification infrastructure that powers outbound communications for REFRACT Delivery recipient invitations and REFRACT Workflow participant and approver notifications. It is not a standalone product - it is the shared layer underneath those flows.
REFRACT eSign emails start in a different place. Because the signing experience is hosted by REFRACT, eSign emails are composed by the REFRACT eSign Portal; EMAIL_PROVIDER still decides where they are sent from - see REFRACT eSign emails below.
Scope
The EMAIL_PROVIDER environment variable controls every notification email REFRACT sends for your tenant: REFRACT Delivery and REFRACT Workflow in full, and REFRACT eSign for every envelope your Dispatcher creates while it is set.
Two Modes
Two notification routing modes are supported. The mode is set via the EMAIL_PROVIDER environment variable on both your Dispatcher and Processor Function Apps.
vault-shared (Default)
The Dispatcher queues notification messages to your Azure Service Bus. Your Processor picks them up and relays each message to the REFRACT Notification service (HMAC-signed). REFRACT Shared Services' Azure Communication Services instance handles the actual email delivery.
Customer Azure Subscription REFRACT Shared Services
────────────────────────────────────── ────────────────────────────────────
Dispatcher
└─ enqueue notification message
└─ [Customer Service Bus]
└─ Processor NotificationWorker
└─ POST /api/notifications/send
(HMAC-SHA256 signed)
└─ REFRACT Notification service
└─ ACS (email)The HMAC-signed POST carries recipient email, portal link, notification type, document name, any one-time code, and - for OTP and other pre-rendered notifications - the fully rendered subject, HTML, and text body, plus any custom message text. Document content, file bytes, signatures, and form field values are never included.
SMS is not sent for any current flow
The notification service can send SMS if given an SMS_OTP-type message, but nothing in REFRACT Delivery, REFRACT Workflow, or REFRACT eSign currently produces one - every OTP code today is sent by email, regardless of any SMS-related setting a signing session's field manifest might reference.
customer-acs
Your Processor sends REFRACT Delivery and REFRACT Workflow notification emails directly through your own Azure Communication Services instance. For these features, the REFRACT Notification service is never called and no notification metadata transits REFRACT Shared Services.
Customer Azure Subscription
──────────────────────────────────────
Dispatcher
└─ enqueue (metadata-only message)
└─ [Customer Service Bus]
└─ Processor NotificationWorker
└─ sendViaCustomerAcs()
└─ Your own ACS
(ACS_EMAIL_ENDPOINT + ACS_EMAIL_KEY)customer-acs scope: every REFRACT email
Setting EMAIL_PROVIDER=customer-acs on both your Dispatcher and Processor sends every notification email through your own ACS - REFRACT Delivery invitations and OTP codes, REFRACT Workflow participant, approver, and change-request notifications, and every REFRACT eSign email. None of them is sent through the REFRACT shared notification service.
REFRACT eSign emails are still composed by the REFRACT-hosted eSign Portal, so the recipient's address and the message pass through the portal on their way to your Dispatcher. An envelope keeps the mode it was created with: one created before you set customer-acs is still sent through the shared service.
REFRACT eSign emails
The REFRACT eSign signing experience is hosted by REFRACT. Signers open a REFRACT-hosted portal to view the document, request an access code, and sign. The emails that support that experience are composed by the portal. Where they are sent from follows EMAIL_PROVIDER on the Dispatcher that created the envelope, recorded on the envelope when it is created:
| Trigger | vault-shared (default) | customer-acs | |
|---|---|---|---|
| Signer invitation (initial, sequential, resend) | Signing session created, previous signer completes, or resend | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
| Signer reminder and expiry warning | Automatic: a signer who was invited has not signed (reminder), and shortly before that signer's link expires (expiry warning) | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
| OTP access code | Signer requests a code on the portal | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
| Completion notification | Final signer completes | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
| Documents-ready notification | Sealed document is ready | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
| Requester notices | See below | REFRACT Shared Services' ACS | Your ACS, via your Dispatcher and Processor |
In customer-acs mode the portal hands each finished email to your Dispatcher, signed with that envelope's key. Your Dispatcher sends it only to that envelope's signer or requester, queues it, and your Processor sends it from your own Azure Communication Services. It is never sent through the shared service instead.
In both modes every eSign email is recorded on the envelope's audit trail, as queued or as not sent with the reason.
The reminder email uses the invitation's layout and the signer's same link, worded as a reminder ("Reminder: please sign ...", "Your signature is still needed"). Its purpose is to prompt a signer who has not yet signed. The expiry warning says "Your signing link expires soon", states when the link stops working, and says that the sender will need to send a new request. Both are sent on the schedule described in eSign Reminders, and are recorded on the audit chain as SIGN_REMINDER_SENT. Setting REFRACT_REMINDERS_DISABLED=true on the Dispatcher Function App stops every automatic reminder for REFRACT eSign, REFRACT Workflow and REFRACT Delivery.
If your Dispatcher cannot be reached (customer-acs mode), the portal keeps the email, encrypted, and keeps trying for 24 hours. If it still cannot hand it over, the email is recorded on the audit trail as not sent, and the Lifecycle panel shows it against that signer or the requester so someone can act. One-time access codes expire within minutes, so they are not kept: the signer is told the code could not be sent and can ask for another.
What crosses the boundary for these emails is notification metadata only: recipient email address, signer name, document name, requesting organization, and the signing link. Document content, rendered PDF bytes, signature images, and form field values never leave your Azure subscription - the portal holds a link, not the document.
Requester notifications are separate
REFRACT eSign can also notify the person who requested the document (per-signer notices, documents-ready, decline, revoke, and seal-failure) when requestedByEmail is set on templateSettings.esign. Without it, the decline notice goes to the template's contact, and the others are not sent. See Requester Notifications for the full breakdown and why generatedBy does not substitute for it.
If notification metadata must stay in your tenant
customer-acs keeps every notification email off the REFRACT shared notification service, for REFRACT Delivery, REFRACT Workflow, and REFRACT eSign. REFRACT eSign emails are still composed by the REFRACT-hosted eSign Portal, which already holds signer contact details for the signing session, so the recipient's address and the message pass through the portal. Contact us if your requirements rule that out.
Environment Variable Reference
| Setting | vault-shared (default) | customer-acs |
|---|---|---|
EMAIL_PROVIDER | vault-shared or blank | customer-acs |
VAULT_NOTIFICATION_API_URL | required | not needed |
VAULTNOTIF_SIGNING_KEY | required | not needed |
ACS_EMAIL_ENDPOINT | blank | customer's ACS URL |
ACS_EMAIL_KEY | blank | customer's ACS key |
Required variables for customer-acs mode:
| Variable | Set on | Description |
|---|---|---|
EMAIL_PROVIDER | Dispatcher + Processor | Set to customer-acs on both Function Apps |
ACS_EMAIL_ENDPOINT | Dispatcher + Processor | Your ACS endpoint URL |
ACS_EMAIL_KEY | Dispatcher + Processor | Your ACS access key |
ACS_EMAIL_FROM | Dispatcher + Processor | Optional. Verified sender address (e.g. noreply@contoso.com). Falls back to a REFRACT Platform default address if omitted. |
Choosing a Mode
vault-shared | customer-acs | |
|---|---|---|
| Setup required | None (default) | ACS resource in your tenant; set on both Function Apps |
| REFRACT Shared Services in notification path | Yes - email address, portal link, notification type, document name, and, for pre-rendered notifications, the OTP code and message body | No. REFRACT eSign emails are still composed by the REFRACT-hosted eSign Portal before your Dispatcher sends them. |
| Document data crosses boundary | Never | Never |
| Applies to | REFRACT Delivery, REFRACT Workflow, REFRACT eSign | REFRACT Delivery, REFRACT Workflow, REFRACT eSign (envelopes created while it is set) |
| Use when | Standard deployments | Notification emails must be sent from your own tenant |
What Each Product Sends
| Product | Notification | Routed via EMAIL_PROVIDER |
|---|---|---|
| REFRACT Delivery | Recipient delivery invitation | Yes |
| REFRACT Delivery | OTP code (when requireOtp: true) | Yes |
| REFRACT Delivery | One reminder before the secure link expires, if the document has not been downloaded (see Reminders) | Yes |
| REFRACT Workflow | Participant portal link | Yes |
| REFRACT Workflow | Approver notification | Yes |
| REFRACT Workflow | Change-request and resubmission notifications | Yes |
| REFRACT Workflow | Reminder to the participant or the assigned approver, with a fresh link (see Reminders) | Yes |
| REFRACT eSign | Signer invitation (initial, sequential, resend) | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | Signer reminder and expiry warning | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | OTP access code | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | Completion notification | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | Documents-ready notification | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | Requester notices | Yes - composed by the REFRACT eSign Portal |
| REFRACT eSign | Decline notice to the requester and to signers who had signed (see When a Signer Declines) | Yes - sent by the Dispatcher |
What notifications carry
In both modes, and for every product including REFRACT eSign, document content, rendered PDF bytes, form field values, signature images, and file attachments are never included in any notification message. Notifications do carry the recipient's email address, the portal access link, the document name, and, for OTP and other pre-rendered notifications, the one-time code and the rendered message body.
REFRACT Delivery API Reference
HTTP endpoint reference for creating delivery sessions, querying session state, OTP verification, and revoking access.
REFRACT Dispatch
REFRACT Dispatch is a governed batch document generation engine. Submit a payload with hundreds of records, get a validation report, obtain approval, and let the Processor render and deliver each document independently - with a per-record audit trail and REFRACT Delivery integration.