---
title: Phone Order Enrichment
slug: phone-order-enrichment
docTags: 
createdAt: 2026-06-01T13:20:13.766Z
---

Forter can help​ you ​combat​ fraudulent omnichannel​ orders, including orders​ ​placed​ ​over​ ​the​ ​phone.​ By providing the customer's internet connection information, Forter will be able to use the same advanced behavioral analytics to identify fraud over the phone as we do for online purchases. You can do this either by sending the customer an authentication link *or* by generating a unique ID on your website that the customer will share with your call center representative.

# Authenticate via link

This​ solution ​will trigger an SMS or an email to your customer that directs them to a landing page to complete the transaction. By placing Forter's JavaScript snippet on the designated landing page, Forter will be able to collect important information about the customer during this last step before making a decision.

## Integration Steps

:::::WorkflowBlock
:::WorkflowBlockItem
### Send Order API request

When your customer places an order over the phone and your customer service team enters it into the system, send a request to the Order API with all of the checkout details and with `"orderType": "PHONE"`

```json
{
  "orderId": "123456",
  "timeSentToForter": 1568309531121,
  "checkoutTime": 1568309523223,
  "connectionInformation": {
    "customerIP": "172.18.13.3",
    "userAgent": "",
    "forterTokenCookie": ""
  },
  "orderType": "PHONE",
  .
  .
  ....
}
```
:::

::::WorkflowBlockItem
### Handle response with recommendation

Based on your configuration to use this solution for phone orders, the Order API will return a response with a recommendation to follow up with verification. Note that the decision in this response will always be decline, but you should follow the recommendation. **Hold the order; do not void it.**

:::CodeblockTabs
v2 Response format

```json
{
  "action": "decline",
  "recommendations": ["VERIFICATION_REQUIRED_SEND_LINK"]
}
```
:::

:::CodeblockTabs
v3 Response format

```json
{
"forterDecision": "DECLINE",
"recommendation": "VERIFICATION_REQUIRED_SEND_LINK"
}
```
:::
::::

:::WorkflowBlockItem
### Create landing page with Confirm button

Create a designated landing page for the customer to confirm their phone order. We recommend hashing the URL to prevent abuse.

![Mobile confirmation page](https://app.archbee.com/api/optimize/gmEle7zEqeUqLJAkHuNZq/BYyqo22dT8Dx3csxap4Ld_mobile.png)

Add a **Confirm** button to the page with the following JavaScript.&#x20;

```javascript
let timeout;

function enableConfirmationButton() {
    if (timeout) {
        clearTimeout(timeout);
    }
    // Logic for enabling the confirmation button, for example: $("#confirm-btn").prop('disabled', false);
}

timeout = setTimeout(enableConfirmationButton, 10000);
document.addEventListener('ftr:loaded', enableConfirmationBut
```

Ensure that Forter's JavaScript snippet is also placed on this page, as described in [Front-end integration](https://docs.forter.com/front-end-integration#qidat). This must be placed\* after\* the button script. The timeout extends the load time so that the asynchronous JavaScript for user behavior can load fully and capture the relevant data from the customer's device. On mobile, the button should be disabled by default for this reason.

```html
<!doctype html>
<html>
<head>
<!-- stylesheet -->
<link href="/static/css/main.d2705104.chunk.css" rel="stylesheet"> 
<title>Confirmation Page</title></head>
<body>
  <div1>Confirmation Page</div1>
<form action="/action_page.php" method="get">
  <div2>
    <button class="confirm-btn" type="submit" value="confirm">Confirm Purchase</button>
  </div2>
</form>
<!-- script for timing enablement of confirmation button -->
<script type="text/javascript">let timeout;function enableConfirmationButton(){timeout&&clearTimeout(timeout),$("#confirm-btn").prop("disabled",!1)}timeout=setTimeout(enableConfirmationButton,1e4),document.addEventListener("ftr:loaded",enableConfirmationButton);</script>

<!-- forter JS snippet -->
<script type="text/javascript" id="927ffde14145">(function () {var siteId = "927ffde14145";function t(t,e){for(var n=t.split(""),r=0;r<n.length;++r)n[r]=String.fromCharCode(n[r].charCodeAt(0)+e);return n.join("")}function e(e){return...</script>
</body>
</html>
```

Provide your Forter Implementation Engineer with the URL for this page to include in your site configuration.
:::

:::WorkflowBlockItem
### Send SMS or email to customer

Create a service that sends an SMS or email to the customer who placed the order with a link to the landing page created in the previous step. The customer must click this link and the Confirm button to complete the order.

You should invalidate the link after the **Confirm** button is clicked, so that the customer cannot reopen the page on another device for additional attempts.
:::

:::WorkflowBlockItem
### Request decision from Order Update API

When the customer clicks **Confirm**, send a request to the [Order update](#) API that includes the same `orderId` as the first call, along with an updated `"orderType": "PHONE_LINK"`. Include full headers collected from the confirmation page as well as the `connectionInformation`, including `forterTokenCookie`.&#x20;

```json
{
  "orderId": "123456",
  "orderType": "PHONE_LINK",
  "connectionInformation": {
    "customerIP": "10.0.0.127",
    "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
    "forterTokenCookie": "2315688945984",
    "merchantDeviceIdentifier": "HGJ7512345H3",
    "fullHeaders": "{\\\"method\\\":\\\"GET \\/ HTTP\\/1.1\\\", \\\"Host\\\": \\\"forter.com\\\", \\\"Connection\\\": \\\"keep-alive\\\", \\\"Accept\\\": ...}"
  }
}
```
:::

:::WorkflowBlockItem
### Handle decision from response

This second API response will contain Forter's decision on the order. Determine next steps as described in [Checkout integration](https://docs.forter.com/checkout-integration#QY_j5).&#x20;

We recommend setting an expiration timeframe if you do not receive the second response from Forter because the customer did not click Confirm. Inform your Forter Implementation Engineer of the expiration timeframe so we can configure decisions to match.
:::
:::::

# Generate a web ID

Our web ID solution​ ​requires​ your customer to visit your website and collect a 9-digit unique browsing ID (`customerWebId`) that they can provide over the phone along with their order. By including this identifier along with the order details, Forter can connect the information about the customer collected on your site.

## Integration Steps

:::::WorkflowBlock
:::WorkflowBlockItem
### Front-end integration with web ID

Confirm with your Forter Implementation Engineer that your Forter JavaScript snippet has been adapted to also generate a web ID per customer.&#x20;

```javascript
// Event-listening:
document.addEventListener('ftr:customerWebIdReady', (e) => {
    const webId = e.detail;
    // code with the webId
}

// Altenatively, with jQuery:
$(document).on('ftr:customerWebIdReady', function(e, webId) {
    // code with the webId
})
```

When the 9-digit `webId` is generated, show this unique ID to the customer on your website via JavaScript and HTML. You can tailor how and where this ID shows; it is commonly placed in a footer.
:::

:::WorkflowBlockItem
### Update your phone order process to request a web ID

When a customer calls to place an order over the phone, advise the representative to ask the customer for the 9-digit unique code to include with the order details.

In your order creation system, create a field for this entry that is only visible to internal users collecting phone orders.
:::

::::WorkflowBlockItem
### Validate the web ID (Optional)

The​ ​web ID​ ​is​ ​a​ ​valid​ ​Luhn​ ​Number,​ ​and​ ​​can​ ​be​ ​easily​ ​validated​ ​with​ ​any​ ​programming language.

:::CodeblockTabs
Example

```javascript
function luhnCheck(s) {
    let sum = 0;
    let mul = 1;
    let len = s.length;
    while (len --) {
        const ca = parseInt(s.charAt(len), 10) * mul;
        sum += ca - (ca > 9) * 9;
        mul = 3 - mul;
    }
    return (sum % 10 === 0) && (sum > 0);
}
```
:::
::::

:::WorkflowBlockItem
### Send Order API request

When your customer places an order over the phone and your customer service team enters it into the system, send a request to the Order API with all of the checkout details and with `"orderType": "PHONE"`

Include the `phoneOrderInformation` object, with the `customerWebId` provided along with other information collected during the call. The `connectionInformation` object should include empty strings; this will be gathered from the web ID.&#x20;

```json
{
    "orderId": "234606tb17",
    "orderType": "PHONE",
    "connectionInformation": {
      "userAgent":"",
      "forterTokenCookie":"",
      "customerIp":"45.83.84.44"
    },
    "phoneOrderInformation": {
      "customerWebId": "123456789",
      "callerFirstName": "John",
      "callerLastName": "Smith",
      "callerId": "2121234567"
    }
}
```
:::

:::WorkflowBlockItem
### Handle decision from response

Determine next steps as described in [Checkout integration](https://docs.forter.com/checkout-integration#QY_j5).&#x20;
:::
:::::
