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.

The POST request sent from Notarize contains a JSON body that describes the event and data relevant to the event.

With our new Webhooks V2, you need to subscribe to the individual events you wish to be notified of. Please see our API Endpoint Reference to learn how to subscribe to webhooks. This system allows for more control over the webhooks you receive.

Note that webhooks are shared between Business and Real Estate APIs. This means that if you have a Business account and a Real Estate account, you can set one webhook URL and you will receive status updates for events in both accounts.

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

  • transaction.sent

  • transaction.received

  • transaction.title_added

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

Webhook Subscriptions

Subscription

Description

Webhook Body

notary.*

This specific subscription string will subscribe the organization to all notary sub-events.

See individual notary event bodies below.

notary.compliant

This 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.created

This 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_review

This 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_compliant

This 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_ready

This event is triggered when a Notary in your organization is signer ready (fully onboarded and ready to take transactions).

{
    event: 'notary.signer_ready'
    data: {
        notary_id: ID of notary
        status: status of event
    }
}

transaction.*

This specific subscription string will subscribe the organization to all transaction sub-events.

See individual transaction event bodies below.

transaction.created

This event triggers whenever a transaction is created.

{
    event: 'transaction.created'
    data: {
        transaction_id: ID of transaction
        status: status of event
    }
}

transaction.deleted

This event triggers whenever a transaction is deleted.

{
    event: 'transaction.deleted'
    data: {
        transaction_id: ID of transaction
        status: status of event
    }
}

transaction.expired

This 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.updated

This event triggers whenever a transaction is updated.

{
    event: 'transaction.updated'
    data: {
        transaction_id: ID of transaction
        status: status of event
    }
}

transaction.recalled

This event triggers whenever a transaction is recalled.

{
    event: 'transaction.recalled'
    data: {
        transaction_id: ID of transaction
        status: status of event
    }
}

transaction.document.upload

This 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.document.reviewed

This event triggers whenever a document bundle is reviewed by any signer.

{
    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.created

This 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.failed

This 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.requested

This 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.processed

This 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.assigned

This 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_ops

This 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_signer

This 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_failed

This 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_passed

This 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_available

This event triggers whenever an underwriter is not available for a transaction.

{
    event: 'transaction.underwriter.not_available'
    data: {
        id: ID of transaction
    }
}

transaction.completed

This 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
            }
}