Shopify连接器
Shopify 是允许用户建立在线商店去销售其商品的电子商务平台。 利用 Zoho CRM 的 Shopify连接器,您可以利用在 Zoho CRM 中编写自定义函数和时间表将来自您的 Shopify 商店 订单和客户模块额数据同步到 Zoho CRM系统。
安装 Shopify连接器
您可以转到Zoho 市场并安装 Shopify连接器或登录您的 Zoho CRM 账户并安装。
- 点击设置 > 设置 > 扩展 & API > 市场。
所有已安装的扩展均列出。 在所有扩展下方,您可以查看 CRM 中支持的所有扩展。 - 点击所有扩展,通览找到Shopify连接器并点击。
关于扩展的详细信息将可用。 - 点击现在安装。
- 在下一页面中,同意 服务条款并点击现在安装。

- 点击授权。
如果您跳过这一步骤,您之后可以从 Shopify连接器扩展详细信息页面授权扩展。

- 指定您的 Shopify 账户的商店子域并点击保存并授权。
您的商店子域是创建您的 Shopify 账户时您为您的在线商店提供的名称。) - 点击安装应用程序。

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