ghost 6.0.10 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/tryghost-i18n-6.1.0.tgz +0 -0
- package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +1 -1
- package/core/built/admin/assets/admin-x-activitypub/{index-wBqnq7A5.mjs → index-DmCoswaX.mjs} +2 -2
- package/core/built/admin/assets/admin-x-activitypub/{index-XhNX0QuF.mjs → index-lT95Q15h.mjs} +8212 -8183
- package/core/built/admin/assets/admin-x-settings/{CodeEditorView-BDBDWpWl.mjs → CodeEditorView-Bu9qXr9c.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
- package/core/built/admin/assets/admin-x-settings/{index-BB7hgOf0.mjs → index-BEpRBH9g.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-DsbJfrQ7.mjs → index-qEdfz2hd.mjs} +94 -94
- package/core/built/admin/assets/admin-x-settings/{modals-CCpr5VWU.mjs → modals-BtQORnS4.mjs} +6 -6
- package/core/built/admin/assets/{chunk.524.695215c994f8cbf547d3.js → chunk.524.2aa0847042f20c9a2a00.js} +7 -7
- package/core/built/admin/assets/{chunk.582.a949b80543caba37906c.js → chunk.582.9182c19afab95991771e.js} +8 -8
- package/core/built/admin/assets/ghost-791574a9e2efe65c88412947d2e80170.css +1 -0
- package/core/built/admin/assets/{ghost-9c608430440a10746540adb7d2cd0f31.js → ghost-9c47d152972b304cab0fb982dc3fccc1.js} +38 -34
- package/core/built/admin/assets/ghost-dark-1a7d101d525c0fdcf406ac0abd98540f.css +1 -0
- package/core/built/admin/assets/posts/posts.js +27345 -27315
- package/core/built/admin/assets/stats/stats.js +28699 -28672
- package/core/built/admin/index.html +4 -4
- package/core/frontend/public/member-attribution.min.js +1 -1
- package/core/server/api/endpoints/search-index.js +2 -2
- package/core/server/api/endpoints/stats.js +10 -4
- package/core/server/data/migrations/versions/6.1/2025-09-11-00-38-13-add-uuid-column-to-tokens.js +8 -0
- package/core/server/data/migrations/versions/6.1/2025-09-11-00-39-08-backfill-tokens-uuid.js +19 -0
- package/core/server/data/migrations/versions/6.1/2025-09-11-00-39-36-tokens-drop-nullable-uuid.js +4 -0
- package/core/server/data/schema/schema.js +1 -0
- package/core/server/data/tinybird/datasources/_mv_hits.datasource +7 -4
- package/core/server/data/tinybird/endpoints/api_top_utm_campaigns.pipe +2 -8
- package/core/server/data/tinybird/endpoints/api_top_utm_contents.pipe +2 -8
- package/core/server/data/tinybird/endpoints/api_top_utm_mediums.pipe +2 -8
- package/core/server/data/tinybird/endpoints/api_top_utm_sources.pipe +2 -8
- package/core/server/data/tinybird/endpoints/api_top_utm_terms.pipe +2 -8
- package/core/server/data/tinybird/fixtures/analytics_events.ndjson +11 -11
- package/core/server/data/tinybird/pipes/mv_hits.pipe +12 -2
- package/core/server/data/tinybird/pipes/mv_session_data.pipe +16 -6
- package/core/server/data/tinybird/tests/api_top_utm_campaigns.yaml +35 -34
- package/core/server/data/tinybird/tests/api_top_utm_contents.yaml +57 -48
- package/core/server/data/tinybird/tests/api_top_utm_mediums.yaml +40 -38
- package/core/server/data/tinybird/tests/api_top_utm_sources.yaml +59 -39
- package/core/server/data/tinybird/tests/api_top_utm_terms.yaml +55 -48
- package/core/server/models/single-use-token.js +1 -0
- package/core/server/services/email-service/EmailRenderer.js +1 -0
- package/core/server/services/email-service/email-templates/template.hbs +6 -0
- package/core/server/services/members/emails/signin.js +4 -4
- package/core/server/services/stats/MrrStatsService.js +10 -5
- package/core/server/services/stats/StatsService.js +2 -2
- package/package.json +6 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/yarn.lock +1002 -419
- package/components/tryghost-i18n-6.0.10.tgz +0 -0
- package/core/built/admin/assets/ghost-a7a53bf80dc45c37ae9c174a0d02a882.css +0 -1
- package/core/built/admin/assets/ghost-dark-6e0062029f988d8676e87f22d8e7f4a3.css +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Ghost</title>
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
<meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%226.
|
|
9
|
+
<meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%226.1%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%2237bd1e3e4d%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%229c120d864e%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22d668621a75%22%2C%22postsFilename%22%3A%22posts.js%22%2C%22postsHash%22%3A%2285275dce41%22%2C%22statsFilename%22%3A%22stats.js%22%2C%22statsHash%22%3A%2231e7d6e61e%22%2C%22adminXActivitypubRemoteConfigUrl%22%3A%22%2F.ghost%2Factivitypub%2Fstable%2Fclient-config%22%7D" />
|
|
10
10
|
|
|
11
11
|
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1, minimal-ui, viewport-fit=cover" />
|
|
12
12
|
<meta name="pinterest" content="nopin" />
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</style>
|
|
29
29
|
|
|
30
30
|
<link integrity="" rel="stylesheet" href="assets/vendor-0ede59da8efb5e28fa929557f7ff7154.css">
|
|
31
|
-
<link integrity="" rel="stylesheet" href="assets/ghost-
|
|
31
|
+
<link integrity="" rel="stylesheet" href="assets/ghost-791574a9e2efe65c88412947d2e80170.css" title="light">
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
</head>
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
|
|
50
50
|
<script src="assets/vendor-aed0068cf9b67d042dd23a6343545b7b.js"></script>
|
|
51
51
|
<script src="assets/chunk.397.e5d027e53a68dff31d76.js"></script>
|
|
52
|
-
<script src="assets/chunk.524.
|
|
53
|
-
<script src="assets/ghost-
|
|
52
|
+
<script src="assets/chunk.524.2aa0847042f20c9a2a00.js"></script>
|
|
53
|
+
<script src="assets/ghost-9c47d152972b304cab0fb982dc3fccc1.js"></script>
|
|
54
54
|
</body>
|
|
55
55
|
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var m=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var M=(e,r)=>()=>(e&&(r=e(e=0)),r);var _=(e,r)=>{for(var u in r)m(e,u,{get:r[u],enumerable:!0})},P=(e,r,u,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of S(r))!R.call(e,o)&&o!==u&&m(e,o,{get:()=>r[o],enumerable:!(t=y(r,o))||t.enumerable});return e};var T=e=>P(m({},"__esModule",{value:!0}),e);var g={};_(g,{getReferrer:()=>A,parseReferrerData:()=>h});function U(e){let r=e.get("ref"),u=e.get("source"),t=e.get("utm_source"),o=e.get("utm_medium"),i=e.get("utm_term"),s=e.get("utm_campaign"),c=e.get("utm_content");return{source:r||u||t||null,medium:o||null,url:window.document.referrer||null,utmSource:t||null,utmMedium:o||null,utmTerm:i||null,utmCampaign:s||null,utmContent:c||null}}function h(e){let r=new URL(e||window.location.href),u=r.searchParams;return r.hash&&r.hash.includes("#/portal")&&(u=new URL(r.href.replace("/#/portal","")).searchParams),U(u)}function C(e){let{source:r,medium:u,url:t}=e,o=r||u||t||null;if(o)try{let i=new URL(o).hostname,s=window.location.hostname;if(i===s)return null}catch{return o}return o}function A(e){let r=h(e);return C(r)}var d=M(()=>{"use strict"});var b=(d(),T(g)),D=b.parseReferrerData,E=b.getReferrer,p="ghost-history",I=
|
|
1
|
+
"use strict";(()=>{var m=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var M=(e,r)=>()=>(e&&(r=e(e=0)),r);var _=(e,r)=>{for(var u in r)m(e,u,{get:r[u],enumerable:!0})},P=(e,r,u,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of S(r))!R.call(e,o)&&o!==u&&m(e,o,{get:()=>r[o],enumerable:!(t=y(r,o))||t.enumerable});return e};var T=e=>P(m({},"__esModule",{value:!0}),e);var g={};_(g,{getReferrer:()=>A,parseReferrerData:()=>h});function U(e){let r=e.get("ref"),u=e.get("source"),t=e.get("utm_source"),o=e.get("utm_medium"),i=e.get("utm_term"),s=e.get("utm_campaign"),c=e.get("utm_content");return{source:r||u||t||null,medium:o||null,url:window.document.referrer||null,utmSource:t||null,utmMedium:o||null,utmTerm:i||null,utmCampaign:s||null,utmContent:c||null}}function h(e){let r=new URL(e||window.location.href),u=r.searchParams;return r.hash&&r.hash.includes("#/portal")&&(u=new URL(r.href.replace("/#/portal","")).searchParams),U(u)}function C(e){let{source:r,medium:u,url:t}=e,o=r||u||t||null;if(o)try{let i=new URL(o).hostname,s=window.location.hostname;if(i===s)return null}catch{return o}return o}function A(e){let r=h(e);return C(r)}var d=M(()=>{"use strict"});var b=(d(),T(g)),D=b.parseReferrerData,E=b.getReferrer,p="ghost-history",I=1440*60*1e3,w=15;(async function(){try{let e=window.sessionStorage,r=e.getItem(p),u=new Date().getTime(),t=[];if(r)try{t=JSON.parse(r)}catch(n){console.warn("[Member Attribution] Error while parsing history",n)}let o=t.findIndex(n=>{if(!n.time||typeof n.time!="number")return!1;let a=u-n.time;return!(isNaN(n.time)||a>I)});o>0?t.splice(0,o):o===-1&&(t=[]);let i;try{i=D(window.location.href)}catch(n){console.error("[Member Attribution] Parsing referrer failed",n),i={source:null,medium:null,url:null}}let s={referrerSource:i.source,referrerMedium:i.medium,utmSource:i.utmSource,utmMedium:i.utmMedium,utmCampaign:i.utmCampaign,utmTerm:i.utmTerm,utmContent:i.utmContent},c;try{c=E(window.location.href),!c&&i.url&&(c=i.url)}catch(n){console.error("[Member Attribution] Getting final referrer failed",n),c=i.url}try{let n=new URL(window.location.href),a=n.searchParams;a.get("attribution_id")&&a.get("attribution_type")&&(t.push({time:u,id:a.get("attribution_id"),type:a.get("attribution_type"),...s,referrerUrl:c}),a.delete("attribution_id"),a.delete("attribution_type"),n.search="?"+a.toString(),window.history.replaceState({},"",`${n.pathname}${n.search}${n.hash}`))}catch(n){console.error("[Member Attribution] Parsing attribution from querystring failed",n)}let l=window.location.pathname;if(t.length===0||t[t.length-1].path!==l)t.push({path:l,time:u,...s,referrerUrl:c});else if(t.length>0){let n=t[t.length-1];n.time=u,Object.entries(s).forEach(([a,f])=>{f&&(n[a]=f)}),c&&(n.referrerUrl=c)}t.length>w&&(t=t.slice(-w)),e.setItem(p,JSON.stringify(t))}catch(e){console.error("[Member Attribution] Failed with error",e)}})();})();
|
|
@@ -15,7 +15,7 @@ const controller = {
|
|
|
15
15
|
},
|
|
16
16
|
query() {
|
|
17
17
|
const options = {
|
|
18
|
-
filter: 'type:post',
|
|
18
|
+
filter: 'type:post+status:[draft,published,scheduled,sent]',
|
|
19
19
|
limit: '10000',
|
|
20
20
|
order: 'updated_at DESC',
|
|
21
21
|
columns: ['id', 'url', 'title', 'status', 'published_at', 'visibility']
|
|
@@ -34,7 +34,7 @@ const controller = {
|
|
|
34
34
|
},
|
|
35
35
|
query() {
|
|
36
36
|
const options = {
|
|
37
|
-
filter: 'type:page',
|
|
37
|
+
filter: 'type:page+status:[draft,published,scheduled]',
|
|
38
38
|
limit: '10000',
|
|
39
39
|
order: 'updated_at DESC',
|
|
40
40
|
columns: ['id', 'url', 'title', 'status', 'published_at', 'visibility']
|
|
@@ -35,14 +35,20 @@ const controller = {
|
|
|
35
35
|
docName: 'members',
|
|
36
36
|
method: 'browse'
|
|
37
37
|
},
|
|
38
|
+
options: [
|
|
39
|
+
'date_from'
|
|
40
|
+
],
|
|
38
41
|
cache: statsService.cache,
|
|
39
|
-
generateCacheKeyData() {
|
|
42
|
+
generateCacheKeyData(frame) {
|
|
40
43
|
return {
|
|
41
|
-
method: 'mrr'
|
|
44
|
+
method: 'mrr',
|
|
45
|
+
options: frame.options
|
|
42
46
|
};
|
|
43
47
|
},
|
|
44
|
-
async query() {
|
|
45
|
-
return await statsService.api.getMRRHistory(
|
|
48
|
+
async query(frame) {
|
|
49
|
+
return await statsService.api.getMRRHistory({
|
|
50
|
+
dateFrom: frame?.options?.date_from
|
|
51
|
+
});
|
|
46
52
|
}
|
|
47
53
|
},
|
|
48
54
|
subscriptions: {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const logging = require('@tryghost/logging');
|
|
2
|
+
const crypto = require('crypto');
|
|
3
|
+
|
|
4
|
+
const {createTransactionalMigration} = require('../../utils');
|
|
5
|
+
|
|
6
|
+
module.exports = createTransactionalMigration(
|
|
7
|
+
async function up(knex) {
|
|
8
|
+
const tokensWithoutUUID = await knex.select('id').from('tokens').whereNull('uuid');
|
|
9
|
+
|
|
10
|
+
logging.info(`Adding uuid field value to ${tokensWithoutUUID.length} tokens.`);
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
for (const token of tokensWithoutUUID) {
|
|
14
|
+
await knex('tokens').update('uuid', crypto.randomUUID()).where('id', token.id);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
// down is a no-op
|
|
18
|
+
async function down() {}
|
|
19
|
+
);
|
|
@@ -896,6 +896,7 @@ module.exports = {
|
|
|
896
896
|
tokens: {
|
|
897
897
|
id: {type: 'string', maxlength: 24, nullable: false, primary: true},
|
|
898
898
|
token: {type: 'string', maxlength: 32, nullable: false, index: true},
|
|
899
|
+
uuid: {type: 'string', maxlength: 36, nullable: false, unique: true, validations: {isUUID: true}},
|
|
899
900
|
data: {type: 'string', maxlength: 2000, nullable: true},
|
|
900
901
|
created_at: {type: 'dateTime', nullable: false},
|
|
901
902
|
updated_at: {type: 'dateTime', nullable: true},
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
SCHEMA >
|
|
4
2
|
`site_uuid` LowCardinality(String),
|
|
5
3
|
`timestamp` DateTime,
|
|
@@ -16,8 +14,13 @@ SCHEMA >
|
|
|
16
14
|
`href` String,
|
|
17
15
|
`device` String,
|
|
18
16
|
`os` String,
|
|
19
|
-
`browser` String
|
|
17
|
+
`browser` String,
|
|
18
|
+
`utm_source` String,
|
|
19
|
+
`utm_medium` String,
|
|
20
|
+
`utm_campaign` String,
|
|
21
|
+
`utm_term` String,
|
|
22
|
+
`utm_content` String
|
|
20
23
|
|
|
21
24
|
ENGINE "MergeTree"
|
|
22
25
|
ENGINE_PARTITION_KEY "toYYYYMM(timestamp)"
|
|
23
|
-
ENGINE_SORTING_KEY "site_uuid, timestamp, session_id"
|
|
26
|
+
ENGINE_SORTING_KEY "site_uuid, timestamp, session_id"
|
|
@@ -4,20 +4,14 @@ NODE top_utm_campaigns
|
|
|
4
4
|
SQL >
|
|
5
5
|
%
|
|
6
6
|
select
|
|
7
|
-
|
|
8
|
-
when length(source) % 6 = 0 then 'summer_sale_2024'
|
|
9
|
-
when length(source) % 6 = 1 then 'newsletter_weekly'
|
|
10
|
-
when length(source) % 6 = 2 then 'product_launch'
|
|
11
|
-
when length(source) % 6 = 3 then 'holiday_promo'
|
|
12
|
-
when length(source) % 6 = 4 then 'brand_awareness'
|
|
13
|
-
when length(source) % 6 = 5 then 'retention_q4'
|
|
14
|
-
end as utm_campaign,
|
|
7
|
+
utm_campaign,
|
|
15
8
|
count() as visits
|
|
16
9
|
from mv_session_data sd
|
|
17
10
|
inner join filtered_sessions fs
|
|
18
11
|
on fs.session_id = sd.session_id
|
|
19
12
|
where
|
|
20
13
|
site_uuid = {{ String(site_uuid, 'mock_site_uuid', description="Tenant ID", required=True) }}
|
|
14
|
+
and utm_campaign != ''
|
|
21
15
|
{% if defined(date_from) and day_diff(date_from, date_to) == 0 %}
|
|
22
16
|
and toDate(toTimezone(first_pageview, {{String(timezone, 'Etc/UTC', description="Site timezone", required=True)}})) = {{ Date(date_from) }}
|
|
23
17
|
{% else %}
|
|
@@ -4,20 +4,14 @@ NODE top_utm_content
|
|
|
4
4
|
SQL >
|
|
5
5
|
%
|
|
6
6
|
select
|
|
7
|
-
|
|
8
|
-
when length(source) % 6 = 0 then 'hero-banner'
|
|
9
|
-
when length(source) % 6 = 1 then 'sidebar-cta'
|
|
10
|
-
when length(source) % 6 = 2 then 'footer-link'
|
|
11
|
-
when length(source) % 6 = 3 then 'button-primary'
|
|
12
|
-
when length(source) % 6 = 4 then 'text-link'
|
|
13
|
-
when length(source) % 6 = 5 then 'nav-menu'
|
|
14
|
-
end as utm_content,
|
|
7
|
+
utm_content,
|
|
15
8
|
count() as visits
|
|
16
9
|
from mv_session_data sd
|
|
17
10
|
inner join filtered_sessions fs
|
|
18
11
|
on fs.session_id = sd.session_id
|
|
19
12
|
where
|
|
20
13
|
site_uuid = {{ String(site_uuid, 'mock_site_uuid', description="Tenant ID", required=True) }}
|
|
14
|
+
and utm_content != ''
|
|
21
15
|
{% if defined(date_from) and day_diff(date_from, date_to) == 0 %}
|
|
22
16
|
and toDate(toTimezone(first_pageview, {{String(timezone, 'Etc/UTC', description="Site timezone", required=True)}})) = {{ Date(date_from) }}
|
|
23
17
|
{% else %}
|
|
@@ -4,20 +4,14 @@ NODE top_utm_mediums
|
|
|
4
4
|
SQL >
|
|
5
5
|
%
|
|
6
6
|
select
|
|
7
|
-
|
|
8
|
-
when length(source) % 6 = 0 then 'email'
|
|
9
|
-
when length(source) % 6 = 1 then 'social'
|
|
10
|
-
when length(source) % 6 = 2 then 'cpc'
|
|
11
|
-
when length(source) % 6 = 3 then 'organic'
|
|
12
|
-
when length(source) % 6 = 4 then 'referral'
|
|
13
|
-
when length(source) % 6 = 5 then 'display'
|
|
14
|
-
end as utm_medium,
|
|
7
|
+
utm_medium,
|
|
15
8
|
count() as visits
|
|
16
9
|
from mv_session_data sd
|
|
17
10
|
inner join filtered_sessions fs
|
|
18
11
|
on fs.session_id = sd.session_id
|
|
19
12
|
where
|
|
20
13
|
site_uuid = {{ String(site_uuid, 'mock_site_uuid', description="Tenant ID", required=True) }}
|
|
14
|
+
and utm_medium != ''
|
|
21
15
|
{% if defined(date_from) and day_diff(date_from, date_to) == 0 %}
|
|
22
16
|
and toDate(toTimezone(first_pageview, {{String(timezone, 'Etc/UTC', description="Site timezone", required=True)}})) = {{ Date(date_from) }}
|
|
23
17
|
{% else %}
|
|
@@ -4,20 +4,14 @@ NODE top_utm_sources
|
|
|
4
4
|
SQL >
|
|
5
5
|
%
|
|
6
6
|
select
|
|
7
|
-
|
|
8
|
-
when length(source) % 6 = 0 then 'google'
|
|
9
|
-
when length(source) % 6 = 1 then 'facebook'
|
|
10
|
-
when length(source) % 6 = 2 then 'twitter'
|
|
11
|
-
when length(source) % 6 = 3 then 'linkedin'
|
|
12
|
-
when length(source) % 6 = 4 then 'newsletter'
|
|
13
|
-
when length(source) % 6 = 5 then 'instagram'
|
|
14
|
-
end as utm_source,
|
|
7
|
+
utm_source,
|
|
15
8
|
count() as visits
|
|
16
9
|
from mv_session_data sd
|
|
17
10
|
inner join filtered_sessions fs
|
|
18
11
|
on fs.session_id = sd.session_id
|
|
19
12
|
where
|
|
20
13
|
site_uuid = {{ String(site_uuid, 'mock_site_uuid', description="Tenant ID", required=True) }}
|
|
14
|
+
and utm_source != ''
|
|
21
15
|
{% if defined(date_from) and day_diff(date_from, date_to) == 0 %}
|
|
22
16
|
and toDate(toTimezone(first_pageview, {{String(timezone, 'Etc/UTC', description="Site timezone", required=True)}})) = {{ Date(date_from) }}
|
|
23
17
|
{% else %}
|
|
@@ -4,20 +4,14 @@ NODE top_utm_terms
|
|
|
4
4
|
SQL >
|
|
5
5
|
%
|
|
6
6
|
select
|
|
7
|
-
|
|
8
|
-
when length(source) % 6 = 0 then 'ghost cms'
|
|
9
|
-
when length(source) % 6 = 1 then 'headless publishing'
|
|
10
|
-
when length(source) % 6 = 2 then 'content management'
|
|
11
|
-
when length(source) % 6 = 3 then 'newsletter platform'
|
|
12
|
-
when length(source) % 6 = 4 then 'blog software'
|
|
13
|
-
when length(source) % 6 = 5 then 'membership site'
|
|
14
|
-
end as utm_term,
|
|
7
|
+
utm_term,
|
|
15
8
|
count() as visits
|
|
16
9
|
from mv_session_data sd
|
|
17
10
|
inner join filtered_sessions fs
|
|
18
11
|
on fs.session_id = sd.session_id
|
|
19
12
|
where
|
|
20
13
|
site_uuid = {{ String(site_uuid, 'mock_site_uuid', description="Tenant ID", required=True) }}
|
|
14
|
+
and utm_term != ''
|
|
21
15
|
{% if defined(date_from) and day_diff(date_from, date_to) == 0 %}
|
|
22
16
|
and toDate(toTimezone(first_pageview, {{String(timezone, 'Etc/UTC', description="Site timezone", required=True)}})) = {{ Date(date_from) }}
|
|
23
17
|
{% else %}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
{"timestamp":"2100-01-01 00:06:15","session_id":"e5c37e25-ed9e-4940-a2be-bc49149d991a","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"AhrefsBot/7.0; +http://ahrefs.com/robot/","locale":"en-GB","location":"GB","referrer":"https://petty-queen.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world
|
|
2
|
-
{"timestamp":"2100-01-01 01:21:17","session_id":"1267b782-e5a1-4334-8cf6-771d72bbc28e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"d4678fdf-824c-4d5f-a5fe-c713d409faac","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.2.1 (KHTML, like Gecko) Chrome/13.0.868.0 Safari/533.2.1","locale":"es-ES","location":"ES","referrer":"","pathname":"/","href":"https://my-ghost-site.com
|
|
1
|
+
{"timestamp":"2100-01-01 00:06:15","session_id":"e5c37e25-ed9e-4940-a2be-bc49149d991a","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"AhrefsBot/7.0; +http://ahrefs.com/robot/","locale":"en-GB","location":"GB","referrer":"https://petty-queen.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/?utm_source=google&utm_medium=cpc&utm_campaign=summer_sale_2024","utm_source":"google","utm_medium":"cpc","utm_campaign":"summer_sale_2024","utm_term":null,"utm_content":null,"meta":{"referrerSource":"https://petty-queen.com"}}}
|
|
2
|
+
{"timestamp":"2100-01-01 01:21:17","session_id":"1267b782-e5a1-4334-8cf6-771d72bbc28e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"d4678fdf-824c-4d5f-a5fe-c713d409faac","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.2.1 (KHTML, like Gecko) Chrome/13.0.868.0 Safari/533.2.1","locale":"es-ES","location":"ES","referrer":"","pathname":"/","href":"https://my-ghost-site.com/?utm_source=facebook&utm_medium=social&utm_campaign=brand_awareness","utm_source":"facebook","utm_medium":"social","utm_campaign":"brand_awareness","utm_term":null,"utm_content":"post_123","meta":{"referrerSource":""}}}
|
|
3
3
|
{"timestamp":"2100-01-01 01:39:48","session_id":"1267b782-e5a1-4334-8cf6-771d72bbc28e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"d4678fdf-824c-4d5f-a5fe-c713d409faac","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.2.1 (KHTML, like Gecko) Chrome/13.0.868.0 Safari/533.2.1","locale":"es-ES","location":"ES","referrer":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
4
|
-
{"timestamp":"2100-01-01 02:21:13","session_id":"2a31286e-53b4-41da-a7fd-89d966072af5","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"df8343d2-e89d-45b7-ba12-988734efcc56","member_status":"free","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0)","locale":"en-GB","location":"GB","referrer":"https://www.bing.com/","pathname":"/about/","href":"https://my-ghost-site.com/about
|
|
4
|
+
{"timestamp":"2100-01-01 02:21:13","session_id":"2a31286e-53b4-41da-a7fd-89d966072af5","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"df8343d2-e89d-45b7-ba12-988734efcc56","member_status":"free","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0)","locale":"en-GB","location":"GB","referrer":"https://www.bing.com/","pathname":"/about/","href":"https://my-ghost-site.com/about/?utm_source=newsletter&utm_medium=email&utm_campaign=newsletter_weekly","utm_source":"newsletter","utm_medium":"email","utm_campaign":"newsletter_weekly","utm_term":"subscribers","utm_content":"header_link","meta":{"referrerSource":"https://www.bing.com/"}}}
|
|
5
5
|
{"timestamp":"2100-01-01 02:31:43","session_id":"2a31286e-53b4-41da-a7fd-89d966072af5","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"df8343d2-e89d-45b7-ba12-988734efcc56","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0)","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
6
|
-
{"timestamp":"2100-01-02 00:59:45","session_id":"f253b9b7-0a1a-4168-8fcf-b20a1668ce4d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"65bacac2-8122-4ed0-a11f-ac52aa82beb0","member_status":"paid","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows NT 5.3; Win64; x64; rv:11.6) Gecko/20100101 Firefox/11.6.2","locale":"en-GB","location":"GB","referrer":"https://www.google.com/","pathname":"/about/","href":"https://my-ghost-site.com/about
|
|
6
|
+
{"timestamp":"2100-01-02 00:59:45","session_id":"f253b9b7-0a1a-4168-8fcf-b20a1668ce4d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"65bacac2-8122-4ed0-a11f-ac52aa82beb0","member_status":"paid","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows NT 5.3; Win64; x64; rv:11.6) Gecko/20100101 Firefox/11.6.2","locale":"en-GB","location":"GB","referrer":"https://www.google.com/","pathname":"/about/","href":"https://my-ghost-site.com/about/?utm_source=twitter&utm_medium=social&utm_campaign=product_launch","utm_source":"twitter","utm_medium":"social","utm_campaign":"product_launch","utm_term":"new_feature","utm_content":"tweet_456","meta":{"referrerSource":"https://www.google.com/"}}}
|
|
7
7
|
{"timestamp":"2100-01-02 01:12:56","session_id":"f253b9b7-0a1a-4168-8fcf-b20a1668ce4d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"65bacac2-8122-4ed0-a11f-ac52aa82beb0","member_status":"paid","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 5.3; Win64; x64; rv:11.6) Gecko/20100101 Firefox/11.6.2","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
8
8
|
{"timestamp":"2100-01-02 01:16:52","session_id":"f253b9b7-0a1a-4168-8fcf-b20a1668ce4d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"65bacac2-8122-4ed0-a11f-ac52aa82beb0","member_status":"paid","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 5.3; Win64; x64; rv:11.6) Gecko/20100101 Firefox/11.6.2","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
9
|
-
{"timestamp":"2100-01-03 00:01:24","session_id":"9c15f99e-c8b1-4145-a073-e7f8649d2fa4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"4c14393f-d792-403e-bbdc-aa5af3abbdd9","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 5.0; rv:10.7) Gecko/20100101 Firefox/10.7.1","locale":"en-US","location":"US","referrer":"https://duckduckgo.com/","pathname":"/","href":"https://my-ghost-site.com
|
|
9
|
+
{"timestamp":"2100-01-03 00:01:24","session_id":"9c15f99e-c8b1-4145-a073-e7f8649d2fa4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"4c14393f-d792-403e-bbdc-aa5af3abbdd9","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 5.0; rv:10.7) Gecko/20100101 Firefox/10.7.1","locale":"en-US","location":"US","referrer":"https://duckduckgo.com/","pathname":"/","href":"https://my-ghost-site.com/?utm_source=linkedin&utm_medium=social&utm_campaign=holiday_promo","utm_source":"linkedin","utm_medium":"social","utm_campaign":"holiday_promo","utm_term":null,"utm_content":"sponsored_post","meta":{"referrerSource":"https://duckduckgo.com/"}}}
|
|
10
10
|
{"timestamp":"2100-01-03 01:28:09","session_id":"9c15f99e-c8b1-4145-a073-e7f8649d2fa4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"4c14393f-d792-403e-bbdc-aa5af3abbdd9","member_status":"free","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows NT 5.0; rv:10.7) Gecko/20100101 Firefox/10.7.1","locale":"en-US","location":"US","referrer":"https://my-ghost-site.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
11
|
-
{"timestamp":"2100-01-03 01:41:44","session_id":"8a2461a8-91cd-4f01-b066-3de6dc946995","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"f4c738bc-7327-440c-8007-6a0b306c05e3","member_status":"comped","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.0) AppleWebKit/533.2.0 (KHTML, like Gecko) Chrome/39.0.887.0 Safari/533.2.0","locale":"de-DE","location":"DE","referrer":"https://www.bing.com/","pathname":"/about/","href":"https://my-ghost-site.com/about
|
|
11
|
+
{"timestamp":"2100-01-03 01:41:44","session_id":"8a2461a8-91cd-4f01-b066-3de6dc946995","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"f4c738bc-7327-440c-8007-6a0b306c05e3","member_status":"comped","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.0) AppleWebKit/533.2.0 (KHTML, like Gecko) Chrome/39.0.887.0 Safari/533.2.0","locale":"de-DE","location":"DE","referrer":"https://www.bing.com/","pathname":"/about/","href":"https://my-ghost-site.com/about/?utm_source=instagram&utm_medium=social&utm_campaign=retention_q4","utm_source":"instagram","utm_medium":"social","utm_campaign":"retention_q4","utm_term":"loyal_customers","utm_content":"story_789","meta":{"referrerSource":"https://www.bing.com/"}}}
|
|
12
12
|
{"timestamp":"2100-01-03 01:53:31","session_id":"8a2461a8-91cd-4f01-b066-3de6dc946995","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"f4c738bc-7327-440c-8007-6a0b306c05e3","member_status":"comped","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.0) AppleWebKit/533.2.0 (KHTML, like Gecko) Chrome/39.0.887.0 Safari/533.2.0","locale":"de-DE","location":"DE","referrer":"https://my-ghost-site.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
13
13
|
{"timestamp":"2100-01-03 02:00:19","session_id":"8a2461a8-91cd-4f01-b066-3de6dc946995","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"f4c738bc-7327-440c-8007-6a0b306c05e3","member_status":"comped","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.0) AppleWebKit/533.2.0 (KHTML, like Gecko) Chrome/39.0.887.0 Safari/533.2.0","locale":"de-DE","location":"DE","referrer":"https://my-ghost-site.com","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
14
14
|
{"timestamp":"2100-01-03 02:51:20","session_id":"50785df1-3232-4ff7-8495-d93e06d63f5c","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"3675e750-09bf-44c9-bc3f-b9aebac37c5d","member_status":"paid","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 6.3; rv:14.7) Gecko/20100101 Firefox/14.7.1","locale":"fr-FR","location":"FR","referrerSource":"https://search.yahoo.com/","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://search.yahoo.com/"}}}
|
|
15
15
|
{"timestamp":"2100-01-03 03:52:39","session_id":"50785df1-3232-4ff7-8495-d93e06d63f5c","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"3675e750-09bf-44c9-bc3f-b9aebac37c5d","member_status":"paid","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows NT 6.3; rv:14.7) Gecko/20100101 Firefox/14.7.1","locale":"fr-FR","location":"FR","referrerSource":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
16
|
-
{"timestamp":"2100-01-04 00:25:39","session_id":"59478d87-ce95-40fd-a081-65d1e497bcfc","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"97c79891-2ae9-4eb2-ada8-89d2a998747d","member_status":"paid","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.3) AppleWebKit/531.2.2 (KHTML, like Gecko) Chrome/31.0.808.0 Safari/531.2.2","locale":"en-GB","location":"GB","referrerSource":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world
|
|
17
|
-
{"timestamp":"2100-01-04 01:10:48","session_id":"a6b6c4e6-19e3-47a9-afc6-d9870592652e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.0.1 (KHTML, like Gecko) Chrome/32.0.856.0 Safari/533.0.1","locale":"en-GB","location":"GB","referrerSource":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world
|
|
16
|
+
{"timestamp":"2100-01-04 00:25:39","session_id":"59478d87-ce95-40fd-a081-65d1e497bcfc","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"97c79891-2ae9-4eb2-ada8-89d2a998747d","member_status":"paid","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.3) AppleWebKit/531.2.2 (KHTML, like Gecko) Chrome/31.0.808.0 Safari/531.2.2","locale":"en-GB","location":"GB","referrerSource":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/?utm_source=google&utm_medium=organic","utm_source":"google","utm_medium":"organic","utm_campaign":null,"utm_term":"ghost_blog","utm_content":null,"meta":{"referrerSource":""}}}
|
|
17
|
+
{"timestamp":"2100-01-04 01:10:48","session_id":"a6b6c4e6-19e3-47a9-afc6-d9870592652e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.0.1 (KHTML, like Gecko) Chrome/32.0.856.0 Safari/533.0.1","locale":"en-GB","location":"GB","referrerSource":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/?utm_source=partner_site&utm_medium=referral&utm_campaign=summer_sale_2024","utm_source":"partner_site","utm_medium":"referral","utm_campaign":"summer_sale_2024","utm_term":"discount","utm_content":"banner_ad","meta":{"referrerSource":""}}}
|
|
18
18
|
{"timestamp":"2100-01-04 01:16:10","session_id":"a6b6c4e6-19e3-47a9-afc6-d9870592652e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.0.1 (KHTML, like Gecko) Chrome/32.0.856.0 Safari/533.0.1","locale":"en-GB","location":"GB","referrerSource":"https://my-ghost-site.com","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
19
19
|
{"timestamp":"2100-01-04 01:20:15","session_id":"a6b6c4e6-19e3-47a9-afc6-d9870592652e","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/533.0.1 (KHTML, like Gecko) Chrome/32.0.856.0 Safari/533.0.1","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
20
|
-
{"timestamp":"2100-01-04 01:35:41","session_id":"e22a7f6f-28da-4715-a199-6f0338b593d4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"5369031a-a5cd-4176-83d8-d6ffcb3bcfb8","member_status":"free","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/538.0.1 (KHTML, like Gecko) Chrome/16.0.814.0 Safari/538.0.1","locale":"en-GB","location":"GB","referrer":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world
|
|
20
|
+
{"timestamp":"2100-01-04 01:35:41","session_id":"e22a7f6f-28da-4715-a199-6f0338b593d4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"5369031a-a5cd-4176-83d8-d6ffcb3bcfb8","member_status":"free","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/538.0.1 (KHTML, like Gecko) Chrome/16.0.814.0 Safari/538.0.1","locale":"en-GB","location":"GB","referrer":"","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/?utm_source=bing&utm_medium=display&utm_campaign=brand_awareness","utm_source":"bing","utm_medium":"display","utm_campaign":"brand_awareness","utm_term":null,"utm_content":"video_ad","meta":{"referrerSource":""}}}
|
|
21
21
|
{"timestamp":"2100-01-04 01:36:33","session_id":"e22a7f6f-28da-4715-a199-6f0338b593d4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"5369031a-a5cd-4176-83d8-d6ffcb3bcfb8","member_status":"free","post_uuid":"undefined","post_type":"","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/538.0.1 (KHTML, like Gecko) Chrome/16.0.814.0 Safari/538.0.1","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/","href":"https://my-ghost-site.com/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
22
22
|
{"timestamp":"2100-01-04 01:54:50","session_id":"e22a7f6f-28da-4715-a199-6f0338b593d4","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"5369031a-a5cd-4176-83d8-d6ffcb3bcfb8","member_status":"free","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/538.0.1 (KHTML, like Gecko) Chrome/16.0.814.0 Safari/538.0.1","locale":"en-GB","location":"GB","referrer":"https://my-ghost-site.com","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
23
23
|
{"timestamp":"2100-01-05 01:51:00","session_id":"d8e4622f-95cc-4fba-b31b-f38ff72e0975","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"75a190eb-62da-46d2-972d-a9763c954f42","member_status":"paid","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/3.0)","locale":"es-ES","location":"ES","referrerSource":"","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":""}}}
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
{"timestamp":"2100-01-05 00:38:12","session_id":"490475f1-1fb7-4672-9edd-daa1b411b5f9","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/532.2.0 (KHTML, like Gecko) Chrome/20.0.898.0 Safari/532.2.0","locale":"en-GB","location":"GB","referrerSource":"https://my-ghost-site.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
28
28
|
{"timestamp":"2100-01-06 00:51:26","session_id":"8d975128-2027-40c6-834a-972cc0293d21","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"b7e0fca6-27ce-46c0-af57-c591f20dcd51","member_status":"free","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_7 rv:2.0; KW) AppleWebKit/537.0.1 (KHTML, like Gecko) Version/5.0.10 Safari/537.0.1","locale":"fr-FR","location":"FR","referrerSource":"","pathname":"/about/","href":"https://my-ghost-site.com/about/","meta":{"referrerSource":""}}}
|
|
29
29
|
{"timestamp":"2100-01-06 01:28:38","session_id":"61a2896b-7cf8-4853-86a6-a0e4f87c1e21","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"6b8635fb-292f-4422-9fe4-d76cfab2ba31","post_type":"post","user-agent":"Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/533.1.0 (KHTML, like Gecko) Chrome/18.0.852.0 Safari/533.1.0","locale":"en-GB","location":"GB","referrer":"https://search.yahoo.com/","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/","meta":{"referrerSource":"https://search.yahoo.com/"}}}
|
|
30
|
-
{"timestamp":"2100-01-07 01:44:10","session_id":"7f1e88e1-da8e-46df-bc69-d04fb29d603d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows NT 5.0; WOW64; rv:13.9) Gecko/20100101 Firefox/13.9.7","locale":"en-US","location":"US","referrer":"http://wilted-tick.com","pathname":"/about/","href":"https://my-ghost-site.com/about
|
|
31
|
-
{"timestamp":"2100-01-07 02:23:19","session_id":"98159299-8111-4dc8-9156-bb339fe9508c","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1dd","post_type":"post","user-agent":"Mozilla/5.0 (Windows NT 5.0; WOW64; rv:13.9) Gecko/20100101 Firefox/13.9.7","locale":"en-US","location":"US","referrer":"https://my-ghost-site.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world
|
|
30
|
+
{"timestamp":"2100-01-07 01:44:10","session_id":"7f1e88e1-da8e-46df-bc69-d04fb29d603d","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1fc","post_type":"page","user-agent":"Mozilla/5.0 (Windows NT 5.0; WOW64; rv:13.9) Gecko/20100101 Firefox/13.9.7","locale":"en-US","location":"US","referrer":"http://wilted-tick.com","pathname":"/about/","href":"https://my-ghost-site.com/about/?utm_source=reddit&utm_medium=social&utm_campaign=product_launch&utm_term=announcement","utm_source":"reddit","utm_medium":"social","utm_campaign":"product_launch","utm_term":"announcement","utm_content":null,"meta":{"referrerSource":"http://wilted-tick.com"}}}
|
|
31
|
+
{"timestamp":"2100-01-07 02:23:19","session_id":"98159299-8111-4dc8-9156-bb339fe9508c","action":"page_hit","version":"1","payload":{"site_uuid":"mock_site_uuid","member_uuid":"undefined","member_status":"undefined","post_uuid":"06b1b0c9-fb53-4a15-a060-3db3fde7b1dd","post_type":"post","user-agent":"Mozilla/5.0 (Windows NT 5.0; WOW64; rv:13.9) Gecko/20100101 Firefox/13.9.7","locale":"en-US","location":"US","referrer":"https://my-ghost-site.com","pathname":"/blog/hello-world/","href":"https://my-ghost-site.com/blog/hello-world/?utm_source=google&utm_medium=cpc&utm_campaign=holiday_promo&utm_term=black_friday&utm_content=search_ad","utm_source":"google","utm_medium":"cpc","utm_campaign":"holiday_promo","utm_term":"black_friday","utm_content":"search_ad","meta":{"referrerSource":"https://my-ghost-site.com"}}}
|
|
@@ -18,7 +18,12 @@ SQL >
|
|
|
18
18
|
JSONExtractString(payload, 'member_status') as member_status,
|
|
19
19
|
JSONExtractString(payload, 'post_uuid') as post_uuid,
|
|
20
20
|
JSONExtractString(payload, 'post_type') as post_type,
|
|
21
|
-
lower(JSONExtractString(payload, 'user-agent')) as user_agent
|
|
21
|
+
lower(JSONExtractString(payload, 'user-agent')) as user_agent,
|
|
22
|
+
JSONExtractString(payload, 'utm_source') as utm_source,
|
|
23
|
+
JSONExtractString(payload, 'utm_medium') as utm_medium,
|
|
24
|
+
JSONExtractString(payload, 'utm_campaign') as utm_campaign,
|
|
25
|
+
JSONExtractString(payload, 'utm_term') as utm_term,
|
|
26
|
+
JSONExtractString(payload, 'utm_content') as utm_content
|
|
22
27
|
FROM analytics_events
|
|
23
28
|
where action = 'page_hit'
|
|
24
29
|
|
|
@@ -121,7 +126,12 @@ SQL >
|
|
|
121
126
|
when match(user_agent, 'iphone|ipad|safari')
|
|
122
127
|
then 'safari'
|
|
123
128
|
else 'Unknown'
|
|
124
|
-
END as browser
|
|
129
|
+
END as browser,
|
|
130
|
+
utm_source,
|
|
131
|
+
utm_medium,
|
|
132
|
+
utm_campaign,
|
|
133
|
+
utm_term,
|
|
134
|
+
utm_content
|
|
125
135
|
FROM mv_hits_0
|
|
126
136
|
|
|
127
137
|
TYPE materialized
|
|
@@ -4,10 +4,15 @@ SQL >
|
|
|
4
4
|
SELECT
|
|
5
5
|
site_uuid,
|
|
6
6
|
session_id,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
argMin(source, timestamp) as source
|
|
7
|
+
count() as pageviews,
|
|
8
|
+
min(timestamp) as first_pageview,
|
|
9
|
+
max(timestamp) as last_pageview,
|
|
10
|
+
argMin(source, timestamp) as source,
|
|
11
|
+
argMin(utm_source, timestamp) as utm_source,
|
|
12
|
+
argMin(utm_medium, timestamp) as utm_medium,
|
|
13
|
+
argMin(utm_campaign, timestamp) as utm_campaign,
|
|
14
|
+
argMin(utm_term, timestamp) as utm_term,
|
|
15
|
+
argMin(utm_content, timestamp) as utm_content
|
|
11
16
|
FROM _mv_hits
|
|
12
17
|
GROUP BY site_uuid, session_id
|
|
13
18
|
|
|
@@ -24,5 +29,10 @@ SQL >
|
|
|
24
29
|
last_pageview,
|
|
25
30
|
last_pageview - first_pageview AS duration,
|
|
26
31
|
pageviews = 1 AS is_bounce,
|
|
27
|
-
source
|
|
28
|
-
|
|
32
|
+
source,
|
|
33
|
+
utm_source,
|
|
34
|
+
utm_medium,
|
|
35
|
+
utm_campaign,
|
|
36
|
+
utm_term,
|
|
37
|
+
utm_content
|
|
38
|
+
FROM mv_hits_0
|
|
@@ -3,106 +3,107 @@
|
|
|
3
3
|
description: All fixture data
|
|
4
4
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC
|
|
5
5
|
expected_result: |
|
|
6
|
-
{"utm_campaign":"
|
|
7
|
-
{"utm_campaign":"
|
|
8
|
-
{"utm_campaign":"holiday_promo","visits":
|
|
9
|
-
{"utm_campaign":"product_launch","visits":
|
|
6
|
+
{"utm_campaign":"brand_awareness","visits":2}
|
|
7
|
+
{"utm_campaign":"summer_sale_2024","visits":2}
|
|
8
|
+
{"utm_campaign":"holiday_promo","visits":2}
|
|
9
|
+
{"utm_campaign":"product_launch","visits":2}
|
|
10
10
|
{"utm_campaign":"retention_q4","visits":1}
|
|
11
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
11
12
|
|
|
12
13
|
- name: Filtered by browser - Chrome
|
|
13
14
|
description: Filtered by browser - Chrome
|
|
14
15
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&browser=chrome
|
|
15
16
|
expected_result: |
|
|
16
|
-
{"utm_campaign":"
|
|
17
|
-
{"utm_campaign":"
|
|
18
|
-
{"utm_campaign":"
|
|
19
|
-
{"utm_campaign":"product_launch","visits":1}
|
|
17
|
+
{"utm_campaign":"brand_awareness","visits":2}
|
|
18
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
19
|
+
{"utm_campaign":"retention_q4","visits":1}
|
|
20
20
|
|
|
21
21
|
- name: Filtered by device - desktop
|
|
22
22
|
description: Filtered by device - desktop
|
|
23
23
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&device=desktop
|
|
24
24
|
expected_result: |
|
|
25
|
-
{"utm_campaign":"
|
|
26
|
-
{"utm_campaign":"brand_awareness","visits":3}
|
|
27
|
-
{"utm_campaign":"product_launch","visits":3}
|
|
25
|
+
{"utm_campaign":"brand_awareness","visits":2}
|
|
28
26
|
{"utm_campaign":"holiday_promo","visits":2}
|
|
27
|
+
{"utm_campaign":"product_launch","visits":2}
|
|
28
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
29
29
|
{"utm_campaign":"retention_q4","visits":1}
|
|
30
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
30
31
|
|
|
31
32
|
- name: Filtered by location - UK
|
|
32
33
|
description: Filtered by location - UK
|
|
33
34
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&location=GB
|
|
34
35
|
expected_result: |
|
|
35
|
-
{"utm_campaign":"summer_sale_2024","visits":
|
|
36
|
-
{"utm_campaign":"brand_awareness","visits":
|
|
37
|
-
{"utm_campaign":"holiday_promo","visits":2}
|
|
36
|
+
{"utm_campaign":"summer_sale_2024","visits":2}
|
|
37
|
+
{"utm_campaign":"brand_awareness","visits":1}
|
|
38
38
|
{"utm_campaign":"product_launch","visits":1}
|
|
39
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
39
40
|
|
|
40
41
|
- name: Filtered by OS - Windows
|
|
41
42
|
description: Filtered by OS - Windows
|
|
42
43
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&os=windows
|
|
43
44
|
expected_result: |
|
|
44
|
-
{"utm_campaign":"
|
|
45
|
-
{"utm_campaign":"brand_awareness","visits":3}
|
|
46
|
-
{"utm_campaign":"product_launch","visits":3}
|
|
45
|
+
{"utm_campaign":"brand_awareness","visits":2}
|
|
47
46
|
{"utm_campaign":"holiday_promo","visits":2}
|
|
47
|
+
{"utm_campaign":"product_launch","visits":2}
|
|
48
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
48
49
|
{"utm_campaign":"retention_q4","visits":1}
|
|
50
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
49
51
|
|
|
50
52
|
- name: Filtered by pathname - /about/
|
|
51
53
|
description: Filtered by pathname - /about/
|
|
52
54
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&pathname=%2Fabout%2F
|
|
53
55
|
expected_result: |
|
|
54
|
-
{"utm_campaign":"summer_sale_2024","visits":4}
|
|
55
56
|
{"utm_campaign":"product_launch","visits":2}
|
|
56
57
|
{"utm_campaign":"brand_awareness","visits":1}
|
|
57
|
-
{"utm_campaign":"
|
|
58
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
59
|
+
{"utm_campaign":"retention_q4","visits":1}
|
|
60
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
58
61
|
|
|
59
62
|
- name: Filtered by post_uuid - 06b1b0c9-fb53-4a15-a060-3db3fde7b1fc (/about/)
|
|
60
63
|
description: Filtered by post_uuid - 06b1b0c9-fb53-4a15-a060-3db3fde7b1fc (/about/)
|
|
61
64
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&post_uuid=06b1b0c9-fb53-4a15-a060-3db3fde7b1fc
|
|
62
65
|
expected_result: |
|
|
63
|
-
{"utm_campaign":"summer_sale_2024","visits":4}
|
|
64
66
|
{"utm_campaign":"product_launch","visits":2}
|
|
65
67
|
{"utm_campaign":"brand_awareness","visits":1}
|
|
66
|
-
{"utm_campaign":"
|
|
68
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
69
|
+
{"utm_campaign":"retention_q4","visits":1}
|
|
70
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
67
71
|
|
|
68
72
|
- name: Filtered by source - bing.com
|
|
69
73
|
description: Filtered by source - bing.com
|
|
70
74
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&source=bing.com
|
|
71
75
|
expected_result: |
|
|
72
|
-
{"utm_campaign":"
|
|
76
|
+
{"utm_campaign":"retention_q4","visits":1}
|
|
77
|
+
{"utm_campaign":"newsletter_weekly","visits":1}
|
|
73
78
|
|
|
74
79
|
- name: Filtered by member status - paid
|
|
75
80
|
description: Filtered by member status - paid
|
|
76
81
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&member_status=paid
|
|
77
82
|
expected_result: |
|
|
78
|
-
{"utm_campaign":"
|
|
79
|
-
{"utm_campaign":"summer_sale_2024","visits":2}
|
|
83
|
+
{"utm_campaign":"retention_q4","visits":1}
|
|
80
84
|
{"utm_campaign":"product_launch","visits":1}
|
|
81
85
|
|
|
82
86
|
- name: Filtered by member status - undefined
|
|
83
87
|
description: Filtered by member status - undefined
|
|
84
88
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&member_status=undefined
|
|
85
89
|
expected_result: |
|
|
86
|
-
{"utm_campaign":"
|
|
87
|
-
{"utm_campaign":"
|
|
88
|
-
{"utm_campaign":"
|
|
89
|
-
{"utm_campaign":"retention_q4","visits":1}
|
|
90
|
+
{"utm_campaign":"summer_sale_2024","visits":2}
|
|
91
|
+
{"utm_campaign":"holiday_promo","visits":1}
|
|
92
|
+
{"utm_campaign":"product_launch","visits":1}
|
|
90
93
|
|
|
91
94
|
- name: Filtered by timezone - America/Los_Angeles
|
|
92
95
|
description: Filtered by timezone - America/Los_Angeles
|
|
93
96
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=America/Los_Angeles
|
|
94
97
|
expected_result: |
|
|
95
|
-
{"utm_campaign":"summer_sale_2024","visits":5}
|
|
96
|
-
{"utm_campaign":"brand_awareness","visits":3}
|
|
97
98
|
{"utm_campaign":"holiday_promo","visits":2}
|
|
98
99
|
{"utm_campaign":"product_launch","visits":2}
|
|
100
|
+
{"utm_campaign":"brand_awareness","visits":1}
|
|
101
|
+
{"utm_campaign":"summer_sale_2024","visits":1}
|
|
99
102
|
{"utm_campaign":"retention_q4","visits":1}
|
|
100
103
|
|
|
101
104
|
- name: Test with multiple filters combined
|
|
102
105
|
description: Test with multiple filters combined
|
|
103
106
|
parameters: site_uuid=mock_site_uuid&date_from=2100-01-01&date_to=2100-01-07&timezone=Etc/UTC&device=desktop&browser=firefox
|
|
104
107
|
expected_result: |
|
|
105
|
-
{"utm_campaign":"
|
|
106
|
-
{"utm_campaign":"
|
|
107
|
-
{"utm_campaign":"holiday_promo","visits":1}
|
|
108
|
-
{"utm_campaign":"product_launch","visits":1}
|
|
108
|
+
{"utm_campaign":"holiday_promo","visits":2}
|
|
109
|
+
{"utm_campaign":"product_launch","visits":2}
|