Webhooks V2

Webhooks allow your application to be notified of changes in a transaction's state rather than requesting the state from the API directly.

Notarize Webhooks allow your application to be notified of changes in a transaction's status. The POST request sent from Notarize contains a JSON body that describes the event and data relevant to the event.

Webhook Setup

To set up and modify your Notarize webhooks, you can call our Webhook API endpoints from the command line, or tools like Postman.

What's New with Webhooks V2?

Webhooks V2 supports a number of enhancements from V1:

Migrating to Webhooks V2

It is simple to move to Webhooks V2:

  • Audit the specific events you would like to subscribe to
  • Make a DELETE call to /webhooks to remove the V1 subscription
  • Make a POST call to /v2/webhooks to subscribe to V2 webhooks (see format here)
  • Edit any firewall restrictions on your network that may restrict our ability to send you webhook calls

Please note: a small number of events that were available in Webhooks V1 will no longer be available in Webhooks V2:

  • transaction.title_added

Webhook Subscriptions

SubscriptionDescriptionWebhook Body
notary.*This specific subscription string will subscribe the organization to all notary sub-events.See individual notary event bodies below.
notary.compliantThis event is triggered when a notary's profile is reviewed and marked compliant by our compliance team.{ event: 'notary.compliant' data: { notary_id: ID of notary status: status of event } }
notary.createdThis event is triggered when a new notary is created in your organization.{ event: 'notary.created' data: { notary_id: ID of notary status: status of event } }
notary.needs_reviewThis event is triggered when a Notary has finished onboarding and needs to be reviewed by our compliance team.{ event: 'notary.needs_review' data: { notary_id: ID of notary status: status of event } }
notary.non_compliantThis event is triggered when a Notary is marked non-compliant after review by our compliance team.{ event: 'notary.non_compliant' data: { notary_id: ID of notary status: status of event } }
notary.signer_readyThis event is triggered when a notary has been assigned to a transaction and signer has requested a meeting{ event: 'notary.signer_ready' data: { notary_id: ID of notary transaction_access_link: link to transaction } }
transaction.*This specific subscription string will subscribe the organization to all transaction sub-events.See individual transaction event bodies below.
transaction.createdThis event triggers whenever a transaction is created.{ event: 'transaction.created' data: { transaction_id: ID of transaction status: status of event } }
transaction.deletedThis event triggers whenever a transaction is deleted.{ event: 'transaction.deleted' data: { transaction_id: ID of transaction status: status of event } }
transaction.expiredThis event triggers whenever a transaction has passed a set expiration date.{ event: 'transaction.expired' data: { transaction_id: ID of transaction status: status of event } }
transaction.updatedThis event triggers whenever a transaction is updated.{ event: 'transaction.updated' data: { transaction_id: ID of transaction status: status of event } }
transaction.recalledThis event triggers whenever a transaction is recalled.{ event: 'transaction.recalled' data: { transaction_id: ID of transaction status: status of event } }
transaction.document.uploadThis event triggers whenever a document bundle is uploaded to a transaction.{ event: 'transaction.document.upload' data: { transaction_id: ID of transaction organization_name: name of calling org document: { id: name: } date_occurred: ISO8601 timestamp with timezone } }
transaction.reviewed (Lender only)This event triggers whenever a title agency has finished reviewing a document in a collaborative transaction{ event: 'transaction.document.reviewed' data: { transaction_id: ID of transaction organization_name: name of org document: { id: name: } date_occurred: ISO8601 timestamp with timezone } }
transaction.meeting.createdThis event triggers anytime signer(s) join a meeting. This event can occur when a notary picks up a meeting, or when concurrent signers join an ongoing meeting.{ event: 'transaction.meeting.created', data: { transaction_id: "transaction ID", date_occurred: "ISO8601 timestamp with timezone", signers: [ { first_name: "first name", middle_name: "middle name", last_name: "last name", external_id: "signer external ID", signer_id: "signer ID" } ], meeting: { meeting_id: "meeting ID" } } }
transaction.meeting.failedThis event triggers when a notary terminates a meeting with failure, or when a meeting is terminated after inactivity from participants (e.g. participants lost connection).{ event: 'transaction.meeting.failed', data: { transaction_id: "transaction ID", date_occurred: "ISO8601 timestamp with timezone", meeting: { meeting_id: "meeting ID" } } }
transaction.meeting.requestedThis event triggers anytime signer(s) request a meeting. It can include multiple signers if they are collocated.{ event: 'transaction.meeting.requested', data: { transaction_id: "transaction ID", date_occurred: "ISO8601 timestamp with timezone", signers: [ { first_name: "first name", middle_name: "middle name", last_name: "last name", external_id: "signer external ID", signer_id: "signer ID" } ] } }
transaction.meeting.video.processedThis event triggers once the notary meeting has finished and the recording has finished processing. You can use this event to trigger a call to Retrieve Notarization Record to fetch the meeting video.{ event: 'transaction.meeting.video.processed' data: { date_occurred: ISO8601 timestamp with timezone, meeting: { meeting_id: meeting id api_url: "https://api.notarize.com/v1/notarization_records/meeting_id" }, transaction_id: ID of transaction, }, event: "transaction.meeting.video.processing.complete" }
transaction.notary.assignedThis event triggers anytime a notary is assigned to a transaction.{ event: 'transaction.notary.assigned' data: { transaction_id: ID of transaction organization_name: name of calling org date_occurred: ISO8601 timestamp with timezone } }
transaction.sent_to_closing_opsThis event triggers whenever a transaction is sent to the Notarize closing ops team.{ event: 'transaction.sent_to_closing_ops' data: { transaction_id: ID of transaction organization_name: name of calling org date_occurred: ISO8601 timestamp with timezone } }
transaction.sent_to_signerThis event triggers whenever a transaction is sent to a signer.{ event: 'transaction.sent_to_signer' data: { transaction_id: ID of transaction organization_name: name of calling org date_occurred: ISO8601 timestamp with timezone } }
transaction.signer.kba_failedThis event triggers when a signer failed KBA and is locked out due to too many failed attempts.{ event: 'transaction.signer.kba_failed', data: { transaction_id: "transaction ID", date_occurred: "ISO8601 timestamp with timezone", signer: { first_name: "first name", middle_name: "middle name", last_name: "last name", external_id: "signer external ID", signer_id: "signer ID" } } }
transaction.signer.kba_passedThis event triggers when a signer passed KBA for the transaction.{ event: 'transaction.signer.kba_passed', data: { transaction_id: "transaction ID", date_occurred: "ISO8601 timestamp with timezone", signer: { first_name: "first name", middle_name: "middle name", last_name: "last name", external_id: "signer external ID", signer_id: "signer ID" } } }
transaction.underwriter.not_availableThis event triggers whenever an underwriter is not available for a transaction.{ event: 'transaction.underwriter.not_available' data: { id: ID of transaction } }
transaction.completedThis event triggers whenever a transaction moves into the completed state, following successful termination of the notary meeting/document signing.{ event: "transaction.completed", data: { transaction_id: ID of transaction, status: null } }
transaction.completed_with_rejectionsThis event triggers when a transaction is completed but a subset of documents have been rejected for notarization by the notary.{ event: "transaction.completed_with_rejections", data: { transaction_id: ID of transaction } }