Shopify连接器

Shopify连接器

Shopify 是允许用户建立在线商店去销售其商品的电子商务平台。 利用 Zoho CRM 的 Shopify连接器,您可以利用在 Zoho CRM 中编写自定义函数和时间表将来自您的 Shopify 商店 订单和客户模块额数据同步到 Zoho CRM系统

安装 Shopify连接器

您可以转到Zoho 市场并安装 Shopify连接器或登录您的 Zoho CRM 账户并安装。

  1. 点击设置 > 设置 > 扩展 & API > 市场。
    所有已安装的扩展均列出。 在所有扩展下方,您可以查看 CRM 中支持的所有扩展。
  2. 点击所有扩展,通览找到Shopify连接器并点击。
    关于扩展的详细信息将可用。
  3. 点击现在安装
  4. 在下一页面中,同意 服务条款并点击现在安装
  5. 点击授权
    如果您跳过这一步骤,您之后可以从 Shopify连接器扩展详细信息页面授权扩展。
  6. 指定您的 Shopify 账户的商店子域并点击保存并授权
    您的商店子域是创建您的 Shopify 账户时您为您的在线商店提供的名称。)
  7. 点击安装应用程序

将 Sync Shopify 数据与 Zoho CRM 同步

安装并授权 Shopify连接器后,您可以创建自定义时间表从而根据需要每天将您的 Shopify 数据与 Zoho CRM 集成。 如需了解关于在 Zoho CRM 中创建时间表的更多信息,请阅读更多

下方是用于在您的 Shopify 账户中添加所有新建客户作为 Zoho CRM 中 联系人的自定义函数示例,该函数使用shopifyconnector.customer_after_a_certain_date API.,

domainmap=map();
currentDate=(zoho.currentdate.subDay(1)).toString("yyyy-MM-dd");
currentTime=zoho.currenttime.toString("HH:mm:ss");
requiredFormat=currentDate + "T" + currentTime + "-04:30";
domainmap.put(("updated_at_min"),requiredFormat);
respmap = zoho.crm.invokeConnector("shopifyconnectorextension.sophifyconnector.customer_after_a_certain_date",domainmap);
resp=(respmap.get("response")).toMap();
resp2=resp.get("customers").toJSONList();
info resp2;
for each index a in resp2
{
requiredMap=(resp2.get(a)).toMap();
firstName=requiredMap.get("first_name");
lastName=requiredMap.get("last_name");
if(!isNull(firstName)  &&  !isNull(lastName))
{
createMap=map();
accountMap=map();
createMap.put("First Name",firstName);
createMap.put("Last Name",lastName);
accountMap.put(("Account Name"),lastName + "_" + requiredMap.get("id"));
createMap.put("Email",requiredMap.get("email"));
createMap.put("Description",(("Your Shopify Customer Id is " + requiredMap.get("id")) + " and he accepts_marketing value is ") + requiredMap.get("accepts_marketing"));
default_addMap=map();
default_addMap=(requiredMap.get("default_address")).toMap();
if(default_addMap.size()  >  0)
{
city=default_addMap.get("city");
country=default_addMap.get(("country"));
country=default_addMap.get(("country"));
zip=default_addMap.get("zip");
province=default_addMap.get("province");
phone=default_addMap.get("phone");
accountMap.put("Billing City",city + "");
accountMap.put("Billing Country",(country) + "");
accountMap.put("Billing Code",zip + "");
accountMap.put("Phone",phone + "");
accountMap.put("Billing State",province + "");
createMap.put("Mailing City",city + "");
createMap.put("Mailing Country",(country) + "");
createMap.put("Mailing Zip",zip + "");
createMap.put("Phone",phone + "");
createMap.put("Mailing State",province + "");
}
createAccountResp=map();
createAccountResp = zoho.crm.create(("Accounts"),accountMap);
info createAccountResp;
createMap.put("ACCOUNTID",(createAccountResp).get("Id"));
crmCreateResp = zoho.crm.create("Contacts",createMap);
}
}

您也可以使用下列函数添加 Shopify 商店中下达的所有新订单到 Zoho CRM 的发票模块:

domainmap=map();
currentDate=(zoho.currentdate.subDay(1)).toString("yyyy-MM-dd");
currentTime=zoho.currenttime.toString("HH:mm:ss");
requiredFormat=currentDate + "T" + currentTime + "-04:30";
domainmap.put(("updated_at_min"),requiredFormat);
resultMap = zoho.crm.invokeConnector("shopifyconnectorextension.sophifyconnector.order_after_a_certain_date",domainmap);
resp=(resultMap.get("response")).toMap();
requiredMap=map();
requiredList=resp.get("orders").toJSONList();
info requiredList.size();
for each index ordernumber in requiredList
{
    requiredMap=(requiredList.get(ordernumber)).toMap();
    subject=requiredMap.get("name");
    line_items=requiredMap.get("line_items").toJSONList();
    if(!isNull(subject))
    {
        line_items=requiredMap.get("line_items").toJSONList();
        prodList=List:Map();
        gtotal=0.0;
        //iterate listitems
        for each index a in line_items
        {
            invoiceMap=map();
            productMap=map();
            productRecordMap=map();
            linemap=(line_items.get(a)).toMap();
            quantity=(linemap.get("quantity")).toDecimal();
            price=(linemap.get("price")).toDecimal();
            unit_price=0.0;
            unit_price=price;
            prductid=linemap.get("product_id");
            if(isNull(prductid)  ||  prductid.equalsIgnoreCase("null"))
            {
                prductid="";
            }
            else
            {
                prductid="_" + prductid;
            }
            productMap.put("Product Name",(linemap.get("title")) + prductid);
            productMap.put("Unit Price",unit_price + "");
            //create product
            productRecordMap = zoho.crm.create("Products",productMap,2);
            line_productMap=map();
            line_productMap.put("Product Id",productRecordMap.get("Id"));
            line_productMap.put("Quantity",quantity);
            line_productMap.put("List Price",unit_price);
            line_productMap.put("Net Total",(quantity  *  price));
            prodList.add(line_productMap);
            gtotal=(gtotal  +  quantity  *  price);
        }
        //list item end
        invoiceMap.put("Subject",subject);
        invoiceMap.put("Products",prodList);
        invoiceMap.put("Sub Total",gtotal);
        invoiceMap.put("Grand Total",gtotal);
        customer=requiredMap.get("customer");
        customerrecordmap=customer.toMap();
        lastname=customerrecordmap.get("last_name");
        firstname=customerrecordmap.get("first_name");
        //search accountid of the customer
        customer_id=customerrecordmap.get("id");
        email=customerrecordmap.get("email");
        criteriafield="(Email|=|" + email + ")";
        criteriaMap=List:Map();
        if(!isNull(email))
        {
            criteriaMap = zoho.crm.searchRecords("Contacts",criteriafield);
        }
        contactmap=map();
        accmap=map();
        coMap=(customerrecordmap.get("default_address")).toMap();
        company=coMap.get("company");
        accmap.put(("Account Name"),company);
        acccriteriafield=(("(Account Name|=|") + company) + ")";
        info "company" + company + "sub" + subject;
        acc_criteriaMap=List:Map();
        if(!isNull(company))
        {
            acc_criteriaMap = zoho.crm.searchRecords(("Accounts"),acccriteriafield);
        }
        //create or update contact
        if(criteriaMap.size()  ==  0)
        {
            mymap=map();
            mymap.put("First Name",firstname);
            mymap.put("Last Name",lastname);
            mymap.put("Email",email);
            //create or update account
            if(acc_criteriaMap.size()  ==  0)
            {
                accountsmap = zoho.crm.create(("Accounts"),accmap,2);
                mymap.put("ACCOUNTID",(accountsmap).get("Id"));
            }
            else
            {
                accjson=acc_criteriaMap.toString().toJSONList();
                accjsonmap=(accjson.get(0)).toMap();
                mymap.put("ACCOUNTID",accjsonmap.get("ACCOUNTID"));
            }
            contactmap = zoho.crm.create("Contacts",mymap,2);
            invoiceMap.put("CONTACTID",contactmap.get("Id"));
            invoiceMap.put("ACCOUNTID",mymap.get("ACCOUNTID"));
        }
        else
        {
            json=criteriaMap.toString().toJSONList();
            contactmap=(json.get(0)).toMap();
            if(isNull(contactmap.get("ACCOUNTID")))
            {
                accountsmap=map();
                if(acc_criteriaMap.size()  ==  0)
                {
                    accountsmap = zoho.crm.create(("Accounts"),accmap,2);
                    contactmap.put("ACCOUNTID",(accountsmap).get("Id"));
                }
                else
                {
                    accountsjson=acc_criteriaMap.toString().toJSONList();
                    accountsmap=(accountsjson.get(0)).toMap();
                  contactmap.put("ACCOUNTID",accountsmap.get("ACCOUNTID"));
                }
                updateContact = zoho.crm.updateRecord("Contacts",contactmap.get("CONTACTID"),contactmap);
            }
            invoiceMap.put("CONTACTID",contactmap.get("CONTACTID"));
            invoiceMap.put("ACCOUNTID",contactmap.get("ACCOUNTID"));
        }
        info "invoiceMap==" + invoiceMap;
        //create or update invoice
        criteriafield="(Subject|=|" + subject + ")";
        criteriaMap = zoho.crm.searchRecords("Invoices",criteriafield);
        invoiceDate=requiredMap.get("updated_at");
        datestr=invoiceDate.getPrefix("T");
        invoiceMap.put("Invoice Date",datestr);
        if(criteriaMap.size()  ==  0)
        {
            criteriaMap2 = zoho.crm.create("Invoices",invoiceMap,2);
        }
        else
        {
            json=criteriaMap.toString().toJSONList();
            jsonmap=(json.get(0)).toMap();
            criteriaMap2 = zoho.crm.updateRecord("Invoices",jsonmap.get("INVOICEID"),invoiceMap);
        }
    }
}

此自定义函数作用如下:

  • 函数从 Shopify 抓取所有新建订单并在 Zoho CRM 的发票模块创建记录。 在创建新发票之前,它检查发票相关的联系人、账户产品是否在 Zoho CRM 已经存在。 如果没有,它创建新的联系人、账户和产品并映射到新的发票。 如果记录在 Zoho CRM 已经存在,记录将被更新。
  • 此验证根据各个模块的下列字段完成:
    • 联系人 - 邮件地址
    • 账户 - 公司名称
    • 产品 - 产品 ID。

在这些函数中,行currentDate=(zoho.currentdate.subDay(1)).toString("yyyy-MM-dd"); 用于抓取在执行日期前一天创建的所有数据。 您可以根据您的需要修改时间限制。 例如,如果您每周运行时间表,更改 subDay() 的值为7

您在安装后首次运行自定义函数时,您可能想要从 Shopify 抓取所有现有数据。 在这种情况下,对此值进行相应的设置,并执行一次自定义函数,之后创建每天或每周时间表。 例如,如果您的 Shopify 账户有之前最多 6 个月内的数据,那么将此值设置为 180并执行自定义函数一次。 之后,创建自定义时间表去每天或每周抓取数据。

注意

  • 此处提供的自定义函数仅为示例。 您将能够根据您的要求编写自定义函数。
  • 此连接器仅支持 Shopify 的订单客户 模块 API。

卸载 Shopify连接器

您可以在您希望的任何时候卸载 Shopify连接器。 记住,删除此扩展会删除所有其相关数据。

如需卸载 Shopify连接器

  1. 点击设置 > 设置 > 扩展 & API > 市场。
    所有已安装的扩展均列出。 在所有扩展下方,您可以查看 CRM 中支持的所有扩展。
  2. 浏览找到Shopify连接器并点击对应的卸载链接。
  3. 点击OK 确认。
    扩展将被卸载。

依然找不到您想要的内容?

请给我们写邮件:support@zohocorp.com.cn