Haz un contador de visitas con google analytics
mar, 10 ene 2023
No es necesario hacer un sistema complejo para contar las vistas de tu blog. Puede usar Google Analytics para hacerlo, no necesita conservar los datos en una base de datos.
Aquí no explicamos cómo crear una cuenta de Google analytics, puedes seguir este tutorial para hacerlo.
1. Crea tu api para obtener los datos usando la clase BetaAnalyticsDataClient
export default async function handler(req: NextApiRequest, res: NextApiResponse<Data>) {
const { slug = '/' } = query;
const analyticsDataClient = new BetaAnalyticsDataClient({
client_email: process.env.ANALYTICS_CLIENT_EMAIL,
private_key: process.env.ANALYTICS_PRIVATE_KEY?.replace(/\\n/g, '\n'),
projectId: process.env.ANALYTICS_PROJECT_ID,
const [response] = await analyticsDataClient.runReport({
property: `properties/348472560`,
if (!response || !response.rows) {
res.status(500).json({ error: 'Error while parsing analytics data' });
let total = response.rows.reduce((prev: Object, curr: Object) => {
return prev + parseInt(curr.metricValues[0].value, 0);
res.status(200).json({ total });
res.status(500).json({ error: err });
2. Crea un componente para mostrar los datos
Puede crear un componente para consumir la API del cliente usando useEffect o desde una página que recupera los datos del servidor. Es tu elección
En mi caso voy a hacer 3 renders distintos, uno para cuando se está cargando, otro para el error y el último para la información.
children?: React.ReactNode;
const Container = ({ children }: Props) => {
<div className={styles.views} title="Number of views in this post from Google analytics">
const StarCounter = () => {
const [views, setViews] = React.useState(-1);
const { asPath } = useRouter();
const { total } = await fetch(`/api/analytics?slug=${asPath}`).then((res) => res.json());
<RxCross2 className={styles.error} title="Error on endpoint" />
<FaSpinner className={styles.spinner} title="Loading views" />
export default StarCounter;
3. Incluye tu componente donde quieras mostrarlo
Para ver el resultado del código anterior, solo mire la parte superior de la página y verá un ícono de libro con un contador en el lado derecho.
Puedes ver el código completo en mi repositorio si lo necesitas, y si te parece útil o te gusta puedes darme una estrella