营销人员和DMS的Sitecore Web表单-不记录活动、目标和退出信息

营销人员和DMS的Sitecore Web表单-不记录活动、目标和退出信息,sitecore,web-forms-for-marketers,sitecore-dms,Sitecore,Web Forms For Marketers,Sitecore Dms,WFFM中有一个选项,当有人放弃表单时,表单中输入的任何数据都会被记录下来,并且可以通过辍学报告访问 我有一个WFFM,我已经打开了分析和辍学功能。不幸的是,我没有看到任何数据被记录在数据库中,而且辍学报告是可见的,但是是空的 我从WFFM文件夹中包含的javascript代码中看到,一系列AJAX调用应该用来保存blur事件上的字段——调用/sitecore modules/web/web Forms for Marketers/Tracking.aspx 我试着调试Javascript代码,

WFFM中有一个选项,当有人放弃表单时,表单中输入的任何数据都会被记录下来,并且可以通过辍学报告访问

我有一个WFFM,我已经打开了分析和辍学功能。不幸的是,我没有看到任何数据被记录在数据库中,而且辍学报告是可见的,但是是空的

我从WFFM文件夹中包含的javascript代码中看到,一系列AJAX调用应该用来保存blur事件上的字段——调用/sitecore modules/web/web Forms for Marketers/Tracking.aspx

我试着调试Javascript代码,但从未调用过将信息发布到/sitecore modules/web/webforms for Marketers/Tracking.aspx的方法。你能想出这个代码不起作用的原因吗?还有,有人知道应该记录哪些表中的信息吗?它是WFFM数据库中的字段表吗

最后,尽管我已经打开了这个特定WFFM表单的分析功能,并且我已经将一个活动和一个目标与表单的提交相关联,但是这些都没有被记录下来。我看到表单中输入的数据已成功存储并显示在数据报告中,但数据库中未记录有关活动或目标的任何信息

我甚至直接在DMS数据库中手动检查运行:

select top 10
p.DateTime, p.UrlText, cp.CampaignName
,i.Url, vi.VisitId
from pages p
inner join ItemUrls i on p.ItemId = i.ItemId
inner join Visits vi on vi.VisitId = p.VisitId
inner join GeoIps g on vi.Ip = g.Ip
left join Campaigns cp on cp.CampaignId = vi.CampaignId
order by p.DateTime desc
这一个显示了呈现表单的页面正在被点击,但是没有活动与访问相关联

然后我尝试了以下方法:

select pe.datetime, ped.Name, pg.UrlText from PageEvents pe
inner join PageEventDefinitions ped on ped.PageEventDefinitionId = pe.PageEventDefinitionId
inner join Pages pg on pg.PageId = pe.PageId
order by pe.DateTime desc
但我看不到这个特定活动或目标的任何条目(而我看到与非WFFM Sitecore项目相关的其他活动和目标的条目)

任何建议都将不胜感激

谢谢

弗朗西斯科

编辑

sc.webform.js文件包含以下方法:

_create: function () {
var self = this,
    options = this.options;
if (options.tracking) {
    this.element.find("input[type!='submit'], select, textarea")
    .bind('focus', function (e) { self.onFocusField(e, this) })
    .bind('blur change', function (e) { self.onBlurField(e, this) });

    this.element.find("select")
        .change(function () { $scw.webform.controls.updateAnalyticsListValue(this) });

    this.element.find("input[type='checkbox'], input[type='radio']")
        .click(function () { $scw.webform.controls.updateAnalyticsListValue(this) });
}

this.element.find(".scfDatePickerTextBox").each(function () { $scw.webform.controls.datePicker(this) });
},
这应该由sc.webform小部件初始化上的表单调用。它应该绑定所有输入字段、下拉列表和文本区域的焦点和模糊更改事件。不幸的是,当我试图在这个方法中放置一个断点时,它从未被调用

第二次编辑

有趣。我发现整个过程应该从包含WFFM表单的页面中嵌入的这行Javascript代码开始:

<script type="text/javascript">
$scwhead.ready(function() {
    $scw('#form_A8BF483419174F97A2830E12CBCF7E4F').webform({formId: "{A8BF4834-1917-4F97-A283-0E12CBCF7E4F}",pageId: "{21C24144-B964-4FBA-8388-D9B90EBBC17C}",eventCountId: "pagecolumns_0_columncontent_0_bottomrow_0_form_A8BF483419174F97A2830E12CBCF7E4F_form_A8BF483419174F97A2830E12CBCF7E4F_eventcount",tracking: true})
}); 
</script>
现在没有意义的是,即使我最终可以看到每当我在WFFM表单中从一个字段切换到另一个字段时调用trackEvents(为什么在我不确定之前没有工作),我也看不到WFFM DB中记录的任何数据。我甚至在数据库中尝试了一个快速查询:

select f.Timestamp, f.StorageName, fi.Value, fi.FieldName 
from Form f
inner join Field fi on f.Id = fi.FormId
order by f.Timestamp desc, FieldName

有人知道Tracking.aspx应该保存捕获的字段信息的位置吗?

问这个问题可能很愚蠢,但是您是否为WFFM正确配置了数据源?我的意思是,很明显,您正在使用WFFM..但它是设置为使用SQL还是使用WFFM默认使用的“文件”作为数据库

使用SQL的方法如下:

   <!-- MSSQL-->

    <formsDataProvider type="Sitecore.Forms.Data.DataProviders.WFMDataProvider,Sitecore.Forms.Core">
  <param desc="connection string">Database=Sitecore_WebForms;Data Source=xxx;user id=xxx;password=xxx;Connect Timeout=30</param>
</formsDataProvider>

<!-- SQLite -->

<!--<formsDataProvider type="Sitecore.Forms.Data.DataProviders.SQLite.SQLiteWFMDataProvider,Sitecore.Forms.Core">
  <param desc="connection string">Data Source=/data/sitecore_webforms.db;version=3;BinaryGUID=true</param>
</formsDataProvider>-->

数据库=Sitecore\u WebForms;数据源=xxx;用户id=xxx;密码=xxx;连接超时=30

如果您没有正确配置,我想知道数据是否以某种方式记录在一个地方而不是另一个地方?另外,我要问的另一个问题是,如果这是一个开发环境,您是否在实时模式下运行webforms?在我看来,这只是一个配置问题

我们在6.5更新版6和WFFM 2.3.3修订版上遇到了完全相同的问题。111209我们可以看到对服务器的异步调用,包括包含正确事件的可能格式良好的json对象

例如:

track:[{"fieldId":"{E0A0BCDD-85E1-4D8D-9E76-5ABD240423C9}","type":"Field Completed","value":"test","formId":"{0F3B57C1-1B6A-43B9-A5A6-2E958C168B31}","pageId":"{025AFF68-62B9-42CE-B49F-0C36311E1976}","ticks":16}]

我们没有看到任何辍学者进入数据库,但是…

您是否确保您的活动和目标已部署?如果您已切换数据库,则可能未切换。要重新部署,请执行以下操作:

  • 对于系统->营销中心->目标中的每个目标
  • 将工作流状态更改为草稿
  • 拯救
  • 然后在“审阅”功能区中单击“部署”
  • 这将在pageeventdefinition表中创建一个条目并允许 您需要查询

  • 不要忘记对活动执行同样的操作。

    您是否正确安装了WFFM模块?你能通过分析报告确认DMS本身工作正常吗?马克,DMS 2.0工作正常。如果我将活动和目标添加到WFFM表单以外的任何其他页面,它们都会被很好地记录下来。我们刚刚从Sitecore 6.2升级到6.5,并安装了DMS 2.0(我们以前有OMS,但没有使用,所以我们基本上从头安装了DMS 2.0)。我们还将WFFM升级至最新版本。WFFM的工作原理是,当表单提交时,它会在DB中记录内容,并在提交时执行各种操作(即保存到CRM等)。不起作用的东西只与DMS有关,至少到目前为止看起来是这样的……正如我上面所说,“我看到了与非WFFM Sitecore项目相关的其他活动和目标的条目”,因此是的,在form.config文件的该部分中正确定义了DB。不过,你可能有什么想法。我们最近将DMS数据库移动到另一台服务器。我所更改的只是Sitecore connectionsStrings.config文件中的连接字符串。。。是否还有其他地方需要我更改连接字符串?并且,回答您的另一个问题,不,我不是在实时模式下运行。我正在一个QA环境中测试这一点,该环境有一个CM和一个CD服务器可用。特别是我在CD网站上测试。
    track:[{"fieldId":"{E0A0BCDD-85E1-4D8D-9E76-5ABD240423C9}","type":"Field Completed","value":"test","formId":"{0F3B57C1-1B6A-43B9-A5A6-2E958C168B31}","pageId":"{025AFF68-62B9-42CE-B49F-0C36311E1976}","ticks":16}]