In WFFM esiste un'opzione in modo che, quando qualcuno abbandona il modulo, tutti i dati inseriti nel modulo stesso siano registrati e siano accessibili tramite il rapporto Dropout.Sitecore Web Form per marketing e DMS - non registrare campagne, obiettivi e informazioni di interruzione
Ho un WFFM per il quale ho attivato Analytics e attivato la funzione di esclusione. Sfortunatamente non vedo alcun dato registrato nel DB e il Rapporto Dropout è visibile, ma vuoto.
Vedo dal codice javascript incluso nella cartella WFFM che una serie di chiamate AJAX dovrebbe salvare i campi sugli eventi sfocatura - con chiamate a/moduli sitecore/Web/Web Form per marketer/Tracking.aspx
Ho provato a eseguire il debug del codice Javascript, ma il metodo che si suppone pubblichi le informazioni su/sitecore modules/web/Web Forms per Marketers/Tracking.aspx non viene mai chiamato. Riesci a pensare a qualche ragione per cui questo codice non funzioni? Inoltre, qualcuno sa quale tabella questa informazione dovrebbe essere registrata? È la tabella dei campi nel DB WFFM?
Infine, anche se ho attivato l'analisi su questo particolare modulo WFFM e ho associato una campagna e un obiettivo all'invio del modulo, nessuno di questi viene registrato. Vedo che i dati inseriti nel modulo sono memorizzati con successo e vengono visualizzati nel rapporto dati, ma nessuna informazione su Campaign né sull'obiettivo è registrata nel DB.
Ho anche controllato manualmente direttamente nel DMS DB in esecuzione:
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
Questo mostra che la pagina in cui è resa la forma è essere colpito, ma nessuna campagna è associato alla visita.
poi ho provato la seguente:
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
Ma io non vedere alcuna voce per questa particolare campagna nè per l'obiettivo (mentre vedo voci per altre campagne e gli obiettivi associati agli elementi non WFFM Sitecore)
Qualsiasi consiglio sarebbe molto apprezzato!
Grazie,
Francesco
EDIT
Il file contiene sc.webform.js questo metodo:
_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) });
},
Questo dovrebbe essere chiamato dal modulo inizializzazione del widget sc.webform. Dovrebbe associare gli eventi di messa a fuoco e sfocatura ai cambiamenti per tutti i campi di input, i menu a discesa e le aree di testo. Sfortunatamente, quando ho provato a inserire un punto di interruzione all'interno di questo metodo, non viene mai chiamato.
SECONDO EDIT
Interessante. Ho capito che il tutto deve partire da questa riga di codice JavaScript incorporato nella pagina che contiene il modulo WFFM:
<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>
Una volta ho messo un punto di rottura, ero finalmente in grado di tracciare nel metodo _create di jQuery.Widget UI definito in sc.webform.js. Il codice che chiama _create è in realtà all'interno della libreria jQuery.UI. Ha un senso, giusto?
Infine, viene eseguito il codice all'interno _create, gli eventi di sfocatura sono legati alle TrackEvents metodo, definito anche all'interno del widget:
_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'
});
Che non ha senso è che ora, anche se finalmente riesco a vedere trackEvents essere chiamato ogni volta che registro da un campo all'altro nel modulo WFFM (perché non funzionava prima che sia un mistero per me), non vedo alcun dato registrato nel DB WFFM. Ho anche provato un rapido query nel 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
Qualcuno sa dove si suppone che Tracking.aspx per salvare le informazioni sul campo catturati?
Il modulo WFFM è stato installato correttamente? Puoi confermare che DMS stia funzionando tramite i rapporti di analisi? –
Mark, DMS 2.0 funziona correttamente. Se aggiungo campagne e obiettivi a qualsiasi altra pagina diversa da un modulo WFFM, vengono registrati correttamente. Abbiamo appena aggiornato da Sitecore 6.2 a 6.5 e installato DMS 2.0 (avevamo l'OMS ma non era usato, quindi abbiamo installato DMS 2.0 da zero). Abbiamo anche aggiornato WFFM all'ultima versione. Il WFFM funziona nel senso che registra il contenuto nel DB quando viene inviato un modulo e esegue varie azioni su invio (ad esempio, salva in CRM, ecc.).Le cose che non funzionano sono legate solo a DMS, almeno questo è quello che sembra così lontano ... –