面向营销人员和 DMS 的 Sitecore Web 表单 - 不记录事件、目标和退出信息

标签 sitecore web-forms-for-marketers sitecore-dms

在 WFFM 中,有一个选项,当有人放弃表单时,在表单本身中输入的任何数据都会被记录下来,并且应该可以通过 Dropout Report 访问。

我有一个 WFFM,为此我打开了 Analytics 并打开了 dropout 功能。不幸的是,我没有看到任何数据记录在数据库中,并且 Dropout Report 可见,但为空。

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

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

最后,即使我在这个特定的 WFFM 表单上打开了分析,并且我已经将事件和目标与表单的提交相关联,但这些都没有被记录下来。我看到表单中输入的数据已成功存储并显示在数据报告中,但数据库中没有记录有关事件和目标的信息。

我什至直接在运行的 DMS DB 中手动检查:

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 小部件初始化时的表单调用。它应该为所有输入字段、下拉列表和文本区域绑定(bind)焦点和模糊更改事件。不幸的是,当我试图在这个方法中放置一个断点时,它永远不会被调用。

第二次编辑

有趣的。我发现整个事情应该从嵌入在包含 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>

一旦我在这里设置了一个断点,我终于能够追踪到 sc.webform.js 中定义的 jQuery.UI 小部件的 _create 方法。调用 _create 的代码实际上在 jQuery.UI 库中。有点道理,对吧?

最后是里面的代码_创建执行时,模糊事件绑定(bind)到 跟踪事件方法,也在小部件中定义:
_trackEvents: function(events) {
$scw.ajax({
     type: 'POST',
     url: "/sitecore modules/web/Web Forms for Marketers/Tracking.aspx" + location.search,
     data: {track: JSON.stringify(events)},
     dataType: 'json'
});

现在没有意义的是,即使我终于可以看到 trackEvents 每当我在 WFFM 表单中从一个字段切换到另一个字段时都会被调用(为什么在这对我来说是个谜之前没有工作),我没有看到任何WFFM 数据库中记录的数据。我什至尝试在数据库中进行快速查询:
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 默认使用的"file"作为它的数据库。

像这样使用 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>-->

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

关于面向营销人员和 DMS 的 Sitecore Web 表单 - 不记录事件、目标和退出信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195895/

相关文章:

sitecore - 如何完全禁用 Sitecore Analytics

sql-server - 有没有办法将数据从旧的 MS Access 数据库导入到新的 SQL Server?

Sitecore 错误 : Could not create instance of type: Sitecore. Form.Core.WffmActionHandler。没有找到匹配的构造函数

database - WFFM 8.0 - 缺少保存到数据库操作

sitecore - 扩展 Sitecore WFFM 字段类型

asp.net - 使用 Sitecore DMS 是否需要页面编辑器和 "cloning"?

sitecore - 当入口页面是别名时,我应该如何启动 Sitecore 营销事件?

Sitecore 8、MVC、体验编辑器 : How to make a rendering refresh after a Field Editor Button has been used

c# - 路径 '/' 的 Controller 未找到或未在 Sitecore 中实现 IController

indexing - 组件未在 sitecore lucene 搜索索引中编入索引