> For the complete documentation index, see [llms.txt](https://even-financial.gitbook.io/developer-center/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://even-financial.gitbook.io/developer-center/native-api-integrations/personal/jornaya-consent-capture-requirements.md).

# Jornaya Consent Capture Requirements

{% hint style="info" %}
**Contact your Engine account representative for onboarding support.** For information related to Jornaya's tag behavior, please reference their [documentation](https://help.infutor.com/docs/getting-started-with-create).
{% endhint %}

## Overview

You can increase your conversion rates by allowing the Engine Call Center to contact leads after they search for a Loan or 2nd Look Product. To enable this for your API you must a consent proof - a Jornaya LeadiD token.

A consent proof is independent, third-party-witnessed evidence that the consumer saw a consent disclosure and acted on it. It is not the consent flag itself; it is evidence the consent event occurred, useful for TCPA defensibility.

### Security & Data Handling

* The consent proof relates to a consumer consent event - handle it with the same care as the rest of the lead's personal data.
* Don't log the token alongside unnecessary PII, and transmit it only over the authenticated, encrypted API connection.
* Use placeholder values, never real consumer tokens, in test fixtures and shared examples.

## How It Works

```mermaid
flowchart LR
    A[Consumer/lead enters Engine Marketplace funnel] --> B[Jornaya tag fires at each step of the funnel]
    B --> C[Consumer views TCPA Disclosure before submit]
    C --> D[Lead info sent via API with consentProofInformation]
    D --> E[Engine stores the consent proof for the lead]
```

The tag should run on the page(s) of your consent flow so the consumer's journey is witnessed. You submit the captured token to Engine when you create or submit the lead at the consent step.

## Integration Steps

{% hint style="warning" %}
**You must generate a token every time a user goes through your flow and submits consent.** The request takes a single `consentProofInformation` object. A lead can accumulate multiple proofs across submissions.
{% endhint %}

{% stepper %}
{% step %}

#### **Install the LeadiD Tag on your Consent Page(s)**

Add the campaign script on every step where the consumer progresses toward consent. Per vendor guidance, place it after the closing `</form>` tag and just before `</body>`.

{% hint style="info" %}
Please reference [Jornaya documentation](https://help.infutor.com/) for additional guidance at this step.
{% endhint %}

**Sample Installation:**

```html
<script id="LeadiDscript" type="text/javascript">
(function() {
  var s = document.createElement('script');
  s.id = 'LeadiDscript_campaign';
  s.type = 'text/javascript';
  s.async = true;
  s.src = '//create.lidstatic.com/campaign/<CAMPAIGN_ID>.js?snippet_version=2';
  var LeadiDscript = document.getElementById('LeadiDscript');
  LeadiDscript.parentNode.insertBefore(s, LeadiDscript);
})();
</script>
<noscript><img src='//create.leadid.com/noscript.gif?lac=<LAC>&lck=<CAMPAIGN_ID>&snippet_version=2' /></noscript>
```

{% endstep %}

{% step %}

#### Add Hidden Token Input

Include the vendor's hidden input on the form that captures consent:

```html
<input id="leadid_token" name="Jornaya_leadid" type="hidden" value="" />
```

You can read the token from this field, from the LeadiD callback function, or both. See Jornaya's [callback documentation](https://help.infutor.com/docs/callback-function).
{% endstep %}

{% step %}

#### Mark the TCPA Disclosure

The disclosure must be witnessed by the tag. Put the marker attribute on a hidden `<input>` - Jornaya will **not** witness a disclosure placed on a `div`, `span`, or `p`.

```html
<label>
  <input type="hidden" data-leadid-type="disclosure" />
  [YOUR TCPA DISCLOSURE TEXT]
</label>
```

Keep the disclosure visible to the consumer near the point of submission.
{% endstep %}

{% step %}

#### Submit Token to Engine

When you submit the lead, include `consentProofInformation` with the captured token and the correct source.

```bash
curl -X POST "https://api.engine.tech/leads/rateTables" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
        "consentProofInformation": {
          "consentProof": "<your_jornaya_leadid_token>",
          "consentProofSource": "external_jornaya"
        }
      }'
```

You can also submit on `POST /leads/{uuid}/rateTables` and other lead-submission endpoints - `consentProofInformation` is accepted wherever you submit a lead.

Please reference [Engine's API endpoint definitions](https://engine.tech/docs/api-reference/#engine-by-moneylion-api-lead) for more information.
{% endstep %}
{% endstepper %}

### API Schema Field Reference

<table><thead><tr><th width="184.30206298828125">Field</th><th width="115.44268798828125">Data Type</th><th width="118.625">Required?</th><th>Description</th></tr></thead><tbody><tr><td><code>consentProof</code></td><td>string</td><td>Yes</td><td>The Jornaya LeadiD token generated by your Jornaya tag</td></tr><tr><td><code>consentProofSource</code></td><td>string</td><td>Yes</td><td>Must be <code>external_jornaya</code></td></tr></tbody></table>

> **Note:** `external_jornaya` is accepted on API submissions only. It is not valid inside an Engine-hosted embed.

### API Response Reference

```json
{
  "consentProofInformation": {
    "consentProof": "abc123-leadid-token",
    "consentProofSource": "external_jornaya"
  }
```

## Additional Considerations

* **Optional and additive.** Submitting `consentProofInformation` doesn't change anything else about your lead payload. Leads without it are still accepted.
* **Disclosure markup matters.** The `data-leadid-type="disclosure"` marker must be on a hidden `<input>`, or the disclosure won't be witnessed.
* **Use production campaign code in production.** Don't ship a Preview/test campaign ID to your live pages - it won't witness real traffic correctly.
* **Token is opaque.** Don't modify or re-encode the token; submit exactly what the tag produced.

## Troubleshooting

| Symptom                       | Likely cause                                           | How to confirm / fix                                                                            |
| ----------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| Token is empty at submit time | Tag not installed on the page, or read before it fired | Confirm the script is on the consent page and read the token from the hidden input or callback. |
| Disclosure not witnessed      | Marker placed on a non-input element                   | Move `data-leadid-type="disclosure"` onto a hidden `<input>`.                                   |
| Validation rejects the token  | Token malformed / not a real LeadiD                    | Verify the tag produced a valid token (vendor self-test below).                                 |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://even-financial.gitbook.io/developer-center/native-api-integrations/personal/jornaya-consent-capture-requirements.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
