# Customise contact verification page for gTLDs

  
Openprovider allows you to customize the e-mails that we send whenever we start [contact verification](https://openprovider.help/books/domains/page/registrant-email-verification-icann-contact-validation). One of the customization elements is the confirmation page. By setting up your own confirmation page, you can redirect your customers directly from the verification e-mail to your own portal.

***NB***: *customization is not limited to just one template: you can use the multi-language and multi-tag features that Openprovider supports. More information about setting up your customers to use the right template and language can be found elsewhere in our* [knowledge base](https://openprovider.help/books/domains/page/working-with-tags-tagging-customers)*.*

## Configuration

First of all, [configure](https://cp.openprovider.eu/account/config-registrant-verification-branding.php) your customer verification branding and include a *Confirmation link* to your own website. This confirmation link can be anything, as long as you include the two most important variables:

- *%%email%%* is the e-mail address to be verified
- **%%authCode%%* is a security code to prevent abuse*

Two examples of a valid URL would then be:

```
https://www.example.com/contact-verification/confirm.php?email=%%email%%&authCode=%%authCode%%<br></br>https://verify.example.com/%%email%%/%%authCode%%/
```

## Handling verification responses

Basically, your script should call the callback script of Openprovider with the right variables: *email, authCode* and *approval.* The *approval* variable should contain *yes* or *no*:

```
https://cp.openprovider.eu/misc.php/email/emailVerificationCallback/?email=%%email%%&authCode=%%authCode%%&approve=%%approval%%
```

There are many ways to accomplish this, one of the approaches is written in an example PHP script below. This script displays a very basic form and asks for an approval or reject. Having that answer, it calls the Openprovider server:

```
<?php<br></br><br></br>  /* requires confirmation URL including<br></br>     ?email=%%email%%&authCode=%%authCode%%<br></br>  */<br></br><br></br>  if (isset($_GET['approval']) && $_GET['email'] && $_GET['authCode']) {<br></br>    $url = 'https://cp.openprovider.eu/misc.php/email/emailVerificationCallback/'<br></br>      .'?email='.urlencode($_GET['email'])<br></br>      .'&authCode='.$_GET['authCode']<br></br>      .'&approve='.$_GET['approval'];<br></br><br></br>    // This command requires allow_url_fopen to be enabled<br></br>    $response = file_get_contents($url);<br></br><br></br>    // Alternatively, use the PHP CURL functions<br></br>    $ch = curl_init();<br></br>    curl_setopt($ch, CURLOPT_URL, $url);<br></br>    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br></br>    $response = curl_exec($ch);<br></br>    curl_close ($ch);<br></br><br></br>    // Output the response to the website visitor, or use this response in your own script for a better answer<br></br>    echo $response;<br></br>    exit;<br></br>  }     <br></br>  else if ($_GET['submit']) {<br></br>    echo 'Not all fields completed<br />';<br></br>  }<br></br><br></br>?>  <br></br><html><br></br>  <head><br></br>    <title>Verify e-mail address</title><br></br>  </head><br></br>  <body><br></br>    <form method="get"><br></br>      Domain: <input type="text" name="email" value="<?php echo $_GET['email']; ?>" /><br /><br></br>      Code: <input type="text" name="authCode" value="<?php echo $_GET['authCode']; ?>" /><br /><br></br>      <input type="radio" name="approval" value="yes" <?php if ($_GET['approval'] == 'yes') echo ' checked'; ?> /> Approve<br></br>      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></br>      <input type="radio" name="approval" value="no" <?php if ($_GET['approval'] == 'no') echo ' checked'; ?> /> Reject<br />    <br></br>      <input type="submit" name="submit" value="Send" /><br></br>    </form>             <br></br>  </body>       <br></br></html>
```

There are four possible responses:

- If an approval is successfully processed, the response is: ```
    status=Ok;<br></br>message= Email address has been verified. 
    ```
- If a rejection is successfully processed, the response is: ```
    status=Rejected;<br></br>message= Email address has not been verified.
    ```
- If the request is invalid (wrong email), the response is: ```
    status=Error;<br></br>message= There is no such email address in our system.
    ```
- If the request is invalid (wrong authCode), the response is: ```
    status=Error;<br></br>message= AuthCode is wrong for this operation.
    ```
- If an other error occurred, the response is: ```
    status=Error;<br></br>message= Bad input data.
    ```

## Configure SPF Record

For example, your domain is example.com.

Set a **TXT** (SPF) record for **example.com** to:

```
v=spf1 include:mail.registrar.eu ?all
```

Set the **CNAME** record for `default._domainkey.example.com` to:

```
dkim.registrar.eu
```

## <span>E-mail authentication</span>

Don't forget to authenticate your domain with Openprovider to send emails that appear to come directly from your domain, instead of from our servers.

![embedded-image-aenw0iyz.png](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-aenw0iyz.png)

You will be prompted to perform this procedure from the [Contact verification branding](https://cp.openprovider.eu/web/action/index#/email-template/ive?utm_source=KB-Article&utm_medium=kb&utm_campaign=KB) page as shown in the image above, however, if forgotten, please follow the instructions:

- Navigate to **Account &gt; Settings &gt; E-mail authentication** page in RCP.
- Click on **Add domain** and add your **example.com** domain.

![embedded-image-js8vdc46.png](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-js8vdc46.png)

Click on the **Authenticate** button once you have added the domain.

If you would like to use a custom DKIM identifier, please refer to [How to use non 'default' DKIM identifier](https://openprovider.help/books/dns/page/how-to-use-non-default-dkim-identifier).

</body></html>