Skip to content

Commit 95de4cb

Browse files
committed
setup analytics for sponsor/partner links
1 parent 86d0a38 commit 95de4cb

File tree

4 files changed

+41
-8
lines changed

4 files changed

+41
-8
lines changed

.vitepress/theme/components/SponsorsGroup.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@ onMounted(async () => {
2121
},
2222
{ rootMargin: '0px 0px 300px 0px' }
2323
)
24-
observer.observe(container)
24+
observer.observe(container!)
2525
onUnmounted(() => observer.disconnect())
2626
2727
// load data
2828
await load()
2929
})
30+
31+
function track(sponsorID: string) {
32+
fathom.trackGoal(`sponsor-click-${placement}-${sponsorID}`, 0)
33+
}
3034
</script>
3135

3236
<template>
@@ -42,6 +46,7 @@ onMounted(async () => {
4246
:href="url"
4347
target="_blank"
4448
rel="sponsored noopener"
49+
@click="track(name)"
4550
>
4651
<picture v-if="img.endsWith('png')">
4752
<source
@@ -57,6 +62,7 @@ onMounted(async () => {
5762
v-if="placement !== 'page' && tier !== 'special'"
5863
href="/sponsor/"
5964
class="sponsor-item action"
65+
@click="track('INTEREST')"
6066
>Your logo</a
6167
>
6268
</div>

.vitepress/theme/components/sponsors.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
import { ref } from 'vue'
44

5+
declare global {
6+
const fathom: {
7+
trackGoal: (id: string, value: number) => any
8+
}
9+
}
10+
511
export interface Sponsor {
612
url: string
713
img: string

src/partners/components/PartnerCard.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ const {
1919
flipLogo,
2020
website
2121
} = data
22+
23+
function track(id: string, linkType: string) {
24+
fathom.trackGoal(`partner-click-${id}-${linkType}`, 0)
25+
}
2226
</script>
2327

2428
<template>
@@ -29,7 +33,7 @@ const {
2933
:href="'/partners/' + normalizeName(name) + '.html'"
3034
>
3135
<div class="info">
32-
<a :href="website.url" target="_blank">
36+
<a :href="website.url" target="_blank" @click="track(name, 'logo')">
3337
<img
3438
class="logo dark"
3539
v-if="hero && flipLogo"

src/partners/components/PartnerPage.vue

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@ const p = (data as Partner[]).find(
1313
(p) => normalizeName(p.name) === partner
1414
)!
1515
16+
const { name, description, hiring, contact, website } = p
17+
1618
function genMailLink(email: string) {
1719
return `mailto:${email}?subject=Looking for a Vue.js Partner`
1820
}
21+
22+
function track(id: string, linkType: string) {
23+
fathom.trackGoal(`partner-click-${id}-${linkType}`, 0)
24+
}
1925
</script>
2026

2127
<template>
@@ -29,19 +35,30 @@ function genMailLink(email: string) {
2935
<PartnerCard hero page :data="p" />
3036

3137
<div class="description">
32-
<h2>About {{ p.name }}</h2>
33-
<p v-for="desc in p.description" v-html="desc"></p>
38+
<h2>About {{ name }}</h2>
39+
<p v-for="desc in description" v-html="desc"></p>
3440
</div>
3541

3642
<div class="actions">
37-
<a :href="p.website.url" target="_blank">Visit Website</a>
38-
<a class="contact" :href="genMailLink(p.contact)" target="_blank"
43+
<a
44+
:href="website.url"
45+
target="_blank"
46+
@click="track(name, 'website')"
47+
>Visit Website</a
48+
>
49+
<a
50+
class="contact"
51+
:href="genMailLink(contact)"
52+
target="_blank"
53+
@click="track(name, 'tracking')"
3954
>Contact</a
4055
>
4156
</div>
4257

43-
<div class="hiring" v-if="p.hiring">
44-
<a :href="p.hiring">{{ p.name }} is hiring!</a>
58+
<div class="hiring" v-if="hiring">
59+
<a :href="hiring" @click="track(name, 'hiring')"
60+
>{{ name }} is hiring!</a
61+
>
4562
</div>
4663
</div>
4764
</template>

0 commit comments

Comments
 (0)