Reference Guide#

2-Step Configuration#

Follow the instruction to get the app and details about installation in Native App Installation

Events and Logs#

To observe and troubleshoot app behavior, you can enable Logging and Event Tracing for your account and share the app logs with us. For more information, please check Snowflake Documentations below:

Stored Procedures#

VERIFY_SINGLE_EMAIL#

The VERIFY_SINGLE_EMAIL procedure validates and standardizes individual email using the Global Email Web Service. It returns the verification results in JSON format or optional output table, supporting optional fields for flexible and accurate email validation.

There are 2 ways to verify an email in Native App Global Email for Snowflake:

  1. Fill in the Verification Form on the Native App interface

  2. Manually run a Snowflake SQL script to call the stored procedure

Verification Form#

In your Snowflake account, select Data Products > Apps > GLOBAL_EMAIL > Menu > Verify Single Email > Try It Now > Start Verifying

Input Example#
  1. Enter the License Key and email you want to verify

    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Try-Now.png
  2. Select Verify

  3. Result will be displayed on the left sidebar

Output Examples#
Verify a single email#

Result will be displayed in JSON format.

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Try-Now-Result.png
Verify a single email and insert the result to an output table#

You can choose to insert the result to an output table for later use with our Default Output Fields

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Try-Now-Default.png
Verify a single email with selected output table fields#

You can choose which fields to be included in the output table.

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Try-Now-Selected-Fields.png
Verify a single email with ‘ALL’ output table fields#

You can choose to have All fields to be included in the output table.

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Try-Now-All-Fields.png

SQL Script#

Manually call our procedures using a Snowflake SQL script.

Setup and Sample Script#
  1. Select Projects > Worksheets on the left panel in your Snowflake account

    You can find the installed application database in Projects > Worksheets > Databases.

    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Sample-Structure.png
  2. Select + to create a new SQL worksheet

    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-Add-SQL-Worksheet.png
  3. Copy and paste the usage example below onto your worksheet to call the stored procedure, replace with your values

    Check Input Parameters for more information.

    /******************************************************************
    Global Email - Verify Single Email Usage Example
    ******************************************************************/
    USE GLOBAL_EMAIL.CORE;
    
    /* Verify a single email, replace with your values*/
    CALL VERIFY_SINGLE_EMAIL(
        LICENSE                => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
       ,EMAIL                  => 'test@yahoo.com'
       ,OPTIONS                => '<OptionName_1:Parameter,OptionName_2:Parameter>'
       ,OUTPUT_TABLE_NAME      => '<OUTPUT_TABLE_NAME>'
       ,OUTPUT_TABLE_FIELDS    => '<Field_1,Field_2>'
    );
    
    /* Result view, if Output Table is provided */
    SELECT *
    FROM <OUTPUT_TABLE_NAME>;
    

    Example of a stored procedure call from a SQL worksheet. Highlight the SQL statement then select Run button on the right top corner.

    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Sample.png
Input Parameters#

Parameter

Data Type

Description

Example

LICENSE

VARCHAR

Required.
The License Key with Credits issued by Melissa.

Get it here.

REPLACE_WITH_YOUR_LICENSE_KEY

EMAIL

VARCHAR

Required.
The email address to be verified.

test@yahoo.com

OPTIONS

VARCHAR

Required. Empty string is accepted.
[OptionName:Parameter], separate by comma(,)

See more information about OPTIONS

verifymailbox:express

OUTPUT_TABLE_NAME

VARCHAR

Required. Empty string is accepted
The output table name.

A new table will be created in the same application database if it doesn’t exist. If the table exists, its structure must remain unchanged.

OUTPUT_TABLE_FIELDS

VARCHAR

Required. Case-sensitive. Empty string is accepted.

Only valid when OUTPUT_TABLE_NAME provided.

Fields in the output table; fields separates by comma(,) if not ‘All’.

Field name must match in one or all in an example list.

If omitted, see Default Output Fields.

RecordID,
REQ_EMAIL,
Results,
EmailAddress,
DeliverabilityConfidenceScore,
MailboxName,
DomainName,
DomainAuthenticationStatus,
TopLevelDomain,
TopLevelDomainName,
DateChecked,
EmailAgeEstimated,
DomainAgeEstimated,
DomainExpirationDate,
DomainCreatedDate,
DomainUpdatedDate,
DomainEmail,
DomainOrganization,
DomainAddress1,
DomainLocality,
DomainAdministrativeArea,
DomainPostalCode,
DomainCountry,
DomainAvailability,
DomainCountryCode,
DomainPrivateProxy,
PrivacyFlag,
MXServer,
DomainTypeIndicator,
BreachCount,
Response,
Timestamp

Output Examples#
Verify a single email#
/******************************************************************
Global Email - Verify Single Email Usage Example
******************************************************************/
USE GLOBAL_EMAIL.CORE;

/* Verify a single email, replace with your values*/
CALL VERIFY_SINGLE_EMAIL(
    LICENSE                => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
   ,EMAIL                  => 'test@yahoo.com'
   ,OPTIONS                => ''
   ,OUTPUT_TABLE_NAME      => ''
   ,OUTPUT_TABLE_FIELDS    => ''
);

Output will be displayed in JSON format.

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-JSON.png
Verify a single email and insert the result into an output table#

If OUTPUT_TABLE_NAME is provided, a new table will be created if not already existed in the same application databasa with Default Output Fields.

  • Call stored procedure VERIFY_SINGLE_EMAIL.

     /* Verify a single email, replace with your values*/
     CALL VERIFY_SINGLE_EMAIL(
         LICENSE                => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
        ,EMAIL                  => 'test@yahoo.com'
        ,OPTIONS                => ''
        ,OUTPUT_TABLE_NAME      => '<OUTPUT_TABLE_NAME>'
        ,OUTPUT_TABLE_FIELDS    => ''
     );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-Default.png
  • Query output table.

    SELECT *
    FROM <OUTPUT_TABLE_NAME>;
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-Default-Table-View.png
Verify a single email with selected output fields#
  • Call stored procedure VERIFY_SINGLE_EMAIL.

    CALL VERIFY_SINGLE_EMAIL(
      LICENSE                => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
     ,EMAIL                  => 'test@yahoo.com'
     ,OPTIONS                => ''
     ,OUTPUT_TABLE_NAME      => '<OUTPUT_TABLE_NAME>'
     ,OUTPUT_TABLE_FIELDS    => '<Field_1,Field_2>'
    );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-Selected-Fields.png
  • Query output table.

    SELECT *
    FROM <OUTPUT_TABLE_NAME>;
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-Selected-Fields-Table-View.png
Verify a single email with ‘ALL’ output table fields#
  • Call stored procedure VERIFY_SINGLE_EMAIL.

    CALL VERIFY_SINGLE_EMAIL(
      LICENSE                => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
     ,EMAIL                  => 'test@yahoo.com'
     ,OPTIONS                => ''
     ,OUTPUT_TABLE_NAME      => '<OUTPUT_TABLE_NAME>'
     ,OUTPUT_TABLE_FIELDS    => 'All'
    );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-All-Fields.png
  • Query output table.

    SELECT *
    FROM <OUTPUT_TABLE_NAME>;
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Single-SQL-Result-All-Fields-Table-View.png

VERIFY_MULTIPLE_EMAILS#

The VERIFY_MULTIPLE_EMAILS procedure processes email records in batches, validating and standardizing key components using the Global Email API.

It can handle tables of any size, returning the results in a specified output table and supports optional fields for flexible, accurate email validation.

Requirements#

To use this feature, you need to prepare an input table in Snowflake beforehand referencing our default input fields below.

Default Input Fields#

Column Name

Data Type

Description

RECORDID

NUMBER

Required.
Record identifier, primary key.

EMAIL

VARCHAR

Required.
The email address to be verified.

SQL Script#

You can find the installed application database in Projects > Worksheets > Databases.

../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-SQL-Sample-Structure.png
Setup and Sample Script#

The step-by-step example below shows how to use our stored procedure VERIFY_MULTIPLE_EMAILS with the default values. Replace with your values.

  • Step 0 - Prepare an input table

    Assume that the input table has the signature below:

    CREATE TABLE IF NOT EXISTS <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> (
         RecId NUMBER(38,0) autoincrement start 1 increment 1 noorder
        ,Email VARCHAR DEFAULT ('')
    ) CLUSTER BY (RecId);
    

    This input table has different column names from the Default Input Fields. Mapping column names in Step 2 is neccessary for the program to get the correct parameters.

  • Step 1 - Grant Required Privileges

    Ensure the application has the necessary access to the input table. Replace placeholders with your actual values.

    /**********************************************************************
    Global Email - Verify Multiple Emails Usage Example
    **********************************************************************/
    /* Grant usage on input table to the application, replace with your values.*/
    GRANT USAGE ON DATABASE <INPUT_DATABASE> TO APPLICATION GLOBAL_EMAIL;
    GRANT USAGE ON SCHEMA <INPUT_DATABASE>.<INPUT_SCHEMA> TO APPLICATION GLOBAL_EMAIL;
    GRANT SELECT ON TABLE <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> TO APPLICATION GLOBAL_EMAIL;
    
  • Step 2 - Map Input Columns with the Default Input Fields

    Set the required parameters and map your input columns to our Default Input Fields.

    You can skip the mapping step if your input table matches our Default Input Fields exactly.

     USE GLOBAL_EMAIL.CORE;
    
     /* Set input parameters, replace with your values */
     SET LICENSE             = '<REPLACE_WITH_YOUR_LICENSE_KEY>';
     SET OPTIONS             = '<OptionName_1:Parameter,OptionName_2:Parameter>';
     SET INPUT_TABLE_NAME    = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>';
     SET OUTPUT_TABLE_NAME   = '<OUTPUT_TABLE_NAME>';
     SET OUTPUT_TABLE_FIELDS = '<Field_1,Field_2>';
    
     /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */
     /* For optional columns, uncomment/comment each line for the needed one. */
     CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS
     SELECT
         RecId                              AS RECORDID
        ,COALESCE(EMAIL, '')                AS EMAIL
     FROM IDENTIFIER($INPUT_TABLE_NAME);
    
  • Step 3 - Call stored procedure VERIFY_MULTIPLE_EMAILS to verify your data

    Check Input Parameters for more information.

    /* Call the verify procedure */
    CALL VERIFY_MULTIPLE_EMAILS(
        LICENSE                => $LICENSE
       ,OPTIONS                => $OPTIONS
       ,INPUT_TABLE_NAME       => TABLE(INPUT_RECORDS)
       ,OUTPUT_TABLE_NAME      => $OUTPUT_TABLE_NAME
       ,OUTPUT_TABLE_FIELDS    => $OUTPUT_TABLE_FIELDS
       -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call
       -- e.g. OUTPUT_TABLE_FIELDS    => 'Field_1,Field_2'
    );
    
    /* Output table view */
    SELECT TOP 100 *
    FROM IDENTIFIER($OUTPUT_TABLE_NAME)
    ORDER BY (RECORDID);
    
Full SQL Script
/**********************************************************************
Global Email - Verify Multiple Emails Usage Example
**********************************************************************/
/* Grant usage on input table to the application, replace with your values.*/
GRANT USAGE ON DATABASE <INPUT_DATABASE> TO APPLICATION GLOBAL_EMAIL;
GRANT USAGE ON SCHEMA <INPUT_DATABASE>.<INPUT_SCHEMA> TO APPLICATION GLOBAL_EMAIL;
GRANT SELECT ON TABLE <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> TO APPLICATION GLOBAL_EMAIL;

USE GLOBAL_EMAIL.CORE;

/* Set input parameters, replace with your values */
SET LICENSE             = '<REPLACE_WITH_YOUR_LICENSE_KEY>';
SET OPTIONS             = '<OptionName_1:Parameter,OptionName_2:Parameter>';
SET INPUT_TABLE_NAME    = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>';
SET OUTPUT_TABLE_NAME   = '<OUTPUT_TABLE_NAME>';
SET OUTPUT_TABLE_FIELDS = '<Field_1,Field_2>';

/* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */
CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS
SELECT
    RecId                              AS RECORDID
   ,COALESCE(EMAIL, '')                AS EMAIL
FROM IDENTIFIER($INPUT_TABLE_NAME);

/* Call the verify procedure */
CALL VERIFY_MULTIPLE_EMAILS(
    LICENSE                => $LICENSE
   ,OPTIONS                => $OPTIONS
   ,INPUT_TABLE_NAME       => TABLE(INPUT_RECORDS)
   ,OUTPUT_TABLE_NAME      => $OUTPUT_TABLE_NAME
   ,OUTPUT_TABLE_FIELDS    => $OUTPUT_TABLE_FIELDS
   -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call
   -- e.g. OUTPUT_TABLE_FIELDS    => 'Field_1,Field_2'
);

/* Output table view */
SELECT TOP 100 *
FROM IDENTIFIER($OUTPUT_TABLE_NAME)
ORDER BY (RECORDID);
Input Parameters#

Parameter

Data Type

Description

Example

LICENSE

VARCHAR

Required.
The License Key with Credits issued by Melissa.

Get it here.

REPLACE_WITH_YOUR_LICENSE_KEY

OPTIONS

VARCHAR

Required. Empty string is accepted.
[OptionName:Parameter], separate by comma(,)

See more information about OPTIONS

If omitted, see Default Input Options.

verifymailbox:express

INPUT_TABLE_NAME

VARCHAR

Required.
Name of the input table

OUTPUT_TABLE_NAME

VARCHAR

Required.
The output table name.

A new table will be created in the same application database if it doesn’t exist. If the table exists, its structure must remain unchanged.

OUTPUT_TABLE_FIELDS

VARCHAR

Required. Case-sensitive. Empty string is accepted.

Fields in the output table; fields separates by comma(,) if not ‘All’.

Field name must match in one or all in an example list.

If omitted, see Default Output Fields.

RecordID,
REQ_EMAIL,
Results,
EmailAddress,
DeliverabilityConfidenceScore,
MailboxName,
DomainName,
DomainAuthenticationStatus,
TopLevelDomain,
TopLevelDomainName,
DateChecked,
EmailAgeEstimated,
DomainAgeEstimated,
DomainExpirationDate,
DomainCreatedDate,
DomainUpdatedDate,
DomainEmail,
DomainOrganization,
DomainAddress1,
DomainLocality,
DomainAdministrativeArea,
DomainPostalCode,
DomainCountry,
DomainAvailability,
DomainCountryCode,
DomainPrivateProxy,
PrivacyFlag,
MXServer,
DomainTypeIndicator,
BreachCount,
Response,
Timestamp

Output Examples#
Verify a table of emails with the default output fields#
  • Call the stored procedure to verify multiple emails with Default Output Fields.

    USE GLOBAL_EMAIL.CORE;
    
    /* Set input parameters, replace with your values */
    SET LICENSE                 = '<REPLACE_WITH_YOUR_LICENSE_KEY>';
    SET OPTIONS                 = '';
    SET INPUT_TABLE_NAME        = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE>';
    SET OUTPUT_TABLE_NAME       = '<OUTPUT_TABLE_NAME>';
    SET OUTPUT_TABLE_FIELDS     = '';
    
    /* Map your input columns with our default schema, replace with your column names */
    /* For optional columns, uncomment/comment each line to enable the needed ones. */
    CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS
    SELECT
       RECID                                AS RECORDID,
       COALESCE(EMAIL, '')                  AS EMAIL
    FROM IDENTIFIER($INPUT_TABLE_NAME);
    
    /* Call the verify procedure */
    CALL VERIFY_MULTIPLE_EMAILS(
        LICENSE                => $LICENSE
       ,OPTIONS                => $OPTIONS
       ,INPUT_TABLE_NAME       => TABLE(INPUT_RECORDS)
       ,OUTPUT_TABLE_NAME      => $OUTPUT_TABLE_NAME
       ,OUTPUT_TABLE_FIELDS    => $OUTPUT_TABLE_FIELDS
    );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-Default-Output.png
  • Query output table.

    SELECT TOP 100 *
    FROM IDENTIFIER($OUTPUT_TABLE_NAME)
    ORDER BY (RECORDID);
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-Default-Output-Table-View.png
Verify a table of emails with selected output fields#
  • Call stored procedure to verify multiple emails from an input table at once.

    USE GLOBAL_EMAIL.CORE;
    
    /* Set input parameters, replace with your values */
    SET LICENSE                 = '<REPLACE_WITH_YOUR_LICENSE_KEY>';
    SET OPTIONS                 = '';
    SET INPUT_TABLE_NAME        = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE>';
    SET OUTPUT_TABLE_NAME       = '<OUTPUT_TABLE_NAME>';
    SET OUTPUT_TABLE_FIELDS     = '<Field_1,Field_2>';
    
    /* Map your input columns with our default schema, replace with your column names */
    /* For optional columns, uncomment/comment each line to enable the needed ones. */
    CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS
    SELECT
       RECID                                AS RECORDID,
       COALESCE(EMAIL, '')                  AS EMAIL
    FROM IDENTIFIER($INPUT_TABLE_NAME);
    
    /* Call the verify procedure */
    CALL VERIFY_MULTIPLE_EMAILS(
         LICENSE                => $LICENSE
        ,OPTIONS                => $OPTIONS
        ,INPUT_TABLE_NAME       => TABLE(INPUT_RECORDS)
        ,OUTPUT_TABLE_NAME      => $OUTPUT_TABLE_NAME
        ,OUTPUT_TABLE_FIELDS    => $OUTPUT_TABLE_FIELDS
        -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call
        -- e.g. OUTPUT_TABLE_FIELDS    => 'Field_1,Field_2'
    );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-Selected-Output.png
  • Query output table.

    SELECT TOP 100 *
    FROM IDENTIFIER($OUTPUT_TABLE_NAME)
    ORDER BY (RECORDID);
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-Selected-Output-Table-View.png
Verify a table of emails with ‘ALL’ output fields#
  • Call stored procedure to verify multiple emails from an input table at once.

    USE GLOBAL_EMAIL.CORE;
    
    /* Set input parameters, replace with your values */
    SET LICENSE                 = '<REPLACE_WITH_YOUR_LICENSE_KEY>';
    SET OPTIONS                 = '';
    SET INPUT_TABLE_NAME        = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE>';
    SET OUTPUT_TABLE_NAME       = '<OUTPUT_TABLE_NAME>';
    SET OUTPUT_TABLE_FIELDS     = 'All';
    
    /* Map your input columns with our default schema, replace with your column names */
    /* For optional columns, uncomment/comment each line to enable the needed ones. */
    CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS
    SELECT
       RECID                                AS RECORDID,
       COALESCE(EMAIL, '')                  AS EMAIL
    FROM IDENTIFIER($INPUT_TABLE_NAME);
    
    /* Call the verify procedure */
    CALL VERIFY_MULTIPLE_EMAILS(
         LICENSE                => $LICENSE
        ,OPTIONS                => $OPTIONS
        ,INPUT_TABLE_NAME       => TABLE(INPUT_RECORDS)
        ,OUTPUT_TABLE_NAME      => $OUTPUT_TABLE_NAME
        ,OUTPUT_TABLE_FIELDS    => $OUTPUT_TABLE_FIELDS
    );
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-All-Output.png
  • Query output table.

    SELECT TOP 100 *
    FROM IDENTIFIER($OUTPUT_TABLE_NAME)
    ORDER BY (RECORDID);
    
    ../../_images/Snowflake-GlobalEmail-Stored-Procedures-Verify-Multiple-All-Output-Table-View.png

DROP_OUTPUT_TABLE#

After the creation, output table is only allowed for:

  • Select.

    SELECT TOP 100 *
    FROM <OUTPUT_TABLE_NAME>
    ORDER BY (RECORDID);
    
  • Insert.

    By calling the same stored procedure without changing the input structure, new records will be inserted to the same table.

  • Drop.

    Use stored procedure DROP_OUTPUT_TABLE if you wish to remove the table from the application database. Only tables created by the procedure call can be dropped.

    CALL GLOBAL_EMAIL.CORE.DROP_OUTPUT_TABLE('<OUTPUT_TABLE_NAME>');
    

Default Input Options#

If empty string, default input options will be:

Parameter

Value

OPTIONS

VerifyMailbox:Express,

TimeToWait:5,

WhoIsLookup:OFF,

DomainCorrection:OFF

These are our recommended service options for general batch processing.

See more information about OPTIONS.

Additional columns available only with WhoIsLookup:ON

  • DomainAgeEstimated

  • DomainExpirationDate

  • DomainCreatedDate

  • DomainUpdatedDate

  • DomainEmail

  • DomainOrganization

  • DomainAddress1

  • DomainLocality

  • DomainAdministrativeArea

  • DomainPostalCode

  • DomainCountry

  • DomainAvailability

  • DomainCountryCode

  • DomainPrivateProxy

Default Output Fields#

Column Name

Data Type

RECORDID

NUMBER PRIMARY KEY

RESULTS

VARCHAR

EMAILADDRESS

VARCHAR

EMAILAGEESTIMATED

VARCHAR

BREACHCOUNT

VARCHAR

DELIVERABILITYCONFIDENCESCORE

VARCHAR

DOMAINNAME

VARCHAR

DOMAINETYPEINDICATOR

VARCHAR

MAILBOXNAME

VARCHAR

PRIVACYFLAG

VARCHAR

TOPLEVELDOMAIN

VARCHAR

TOPLEVELDOMAINNAME

VARCHAR

Versions and Updates#

Check for current version#

Select Data Products > Apps, the current version of the app will be on display.

../../_images/Snowflake-GlobalEmail-Download-App-Step4.png


Or, run this query in Projects > Worksheets

SHOW APPLICATIONS;

Updates#

When Melissa releases a new version of the Native App, your installed application will get updated automatically.

However, you will need to reinstall the app’s functionality after the upgrade is complete, as described in Application Configuration.

Result Codes#

Interpreting Results#

Deliverability Confidence Score (Basic)#

Global Email includes a DeliverabilityConfidenceScore (DCS) with each email.

The DCS is a single number in range 0-100 that represents how confident we are that an email will successfully send. It can be used as a quicker and simpler way to filter emails, either as a first step before diving into result codes, or for a single pass of data cleansing.

DCS is not simply a numerical representation of our result codes, though. We leverage various reference data to further refine DCS, which also makes it dynamic - even more dynamic than our existing result codes.

While certain use cases will vary, our general recommendation for using DCS is:

DCS

Recommendation

0 to 30

Do not send.

31 to 60

Email delivery not guaranteed.

61 to 100

Send mail. There is a high chance of email delivery success.

Result Codes (Advanced)#

Result codes yield more granular information about a given email. They are returned as a comma-delimited string of 4-character alpha-numeric codes, e.g. ES01,ES07,ES21 or EE04,ES22.

ES## and EE## Codes#

The ES## and EE## codes (Email Status and Email Error) are returned alongside each email record in a request.

SE## and GE## Codes#

The SE## and GE## codes (Transmission Service Error and General Transmission Error) are used to signify more general errors, and are returned under the key TransmissionResults in the outermost level of our responses.

Using Result Codes#

In general, we recommend using the equivalent of a string.contains() method to check our result codes.

Looking for exact matches between two result code strings could result in false negatives, since a valid email could come back with either “ES01,ES21” or “ES01,ES22,” where the only difference between those two is the last character, signifying that one was retrieved from our cache and the other in real-time.

Pseudocode#

While our result codes allow for very granular analysis, a general use case could entail something like the following:

# Pythonic pseudocode

resultCodeStr = "ES01,ES10,ES22"
# This indicates that the email is valid based on a real-time check,
# and that we successfully fixed the syntax of the original input.

if resultCodeStr.contains("ES01"):
   # valid email
   handleGoodEmail()
elif resultCodeStr.contains("ES10"):
   # you may want to update your records with our fixed email
   handleFixedEmail()
elif resultCodeStr.contains("EE"):
   # any one or more EE## codes indicates a bad email
   handleBadEmail()

# Few users will need to account for every single individual result
# code, but more granular analysis beyond the above is easily
# implemented.

While changes in result codes are rare outside of major releases, using string.contains() or equivalent is the most future-proof way to handle our result codes.

For example, the result code ES02 was deprecated after Global Email version 3. However, even with version 3, any email that came back with ES02 always had at least one EE## code as well, so any implementation using EE## codes to filter out bad emails would have been forward compatible with no changes needed.

We believe result codes are especially useful for marketing campaigns involving high volumes of emails. Such campaigns are sensitive to problems such as spam traps and accept-all emails, as both of those factors could lead to significantly decreased ROI. While these factors are reflected in the Deliverability Confidence Score, we recommend explicitly filtering out and handling such emails for applications such as marketing campaigns.

Please refer to the FAQ: What is an accept all mail server?, for more information on accept-all emails and why they are a problem in the world of email verification and email marketing.

Common Result Code Recommendations#

The following table shows the most common result codes seen while using Global Email, and our recommendations for how to interpret them.

Code

Description

Recommendataion for Marketing

Recommendataion for Point of Entry

ES01

Valid Email

Accept

Accept

ES03

Unknown Email

Reject

Caution

ES21

Verify (Precision: Cached Mailbox Result)

Accept

Accept

ES22

Verify (Precision: Real-time Mailbox Result)

Accept

Accept

EE01

Email Syntax Error

Reject

Reject

EE02

Email Domain Not Found

Reject

Reject

EE03

Email Server Not Found

Reject

Reject

EE04

Invalid Email

Reject

Reject

For the full list of all possible result codes, please visit here.