Hierarchy of Effects and Communication Response Models: How Audiences Move from Awareness to Action

Last Updated June 8, 2026

The Hierarchy of Effects is a communication response framework that explains how audiences may move from basic awareness to understanding, attitude formation, preference, conviction, and action. Rather than treating communication as an immediate trigger, it treats response as a staged process. A person usually does not encounter a message and move instantly to commitment. They notice, interpret, evaluate, compare, trust, decide, and act over time.

In content frameworks, hierarchy-of-effects thinking matters because it helps editors and strategists distinguish exposure from understanding, understanding from attitude, attitude from intention, and intention from behavior. A page may generate traffic without creating knowledge. A campaign may create liking without producing trust. A message may create intention without supporting action. Communication response models help diagnose where the sequence is working, where it breaks, and what kind of content support is needed at each stage.

Abstract institutional illustration of layered response stages, branching communication pathways, concentric targets, flow lines, and modular panels representing hierarchy of effects models.
A restrained editorial illustration showing communication response models as staged pathways through awareness, interpretation, evaluation, and action.

This article examines the Hierarchy of Effects and related communication response models as frameworks for audience movement, message sequencing, stage diagnosis, content planning, measurement, and ethical communication. It explains how cognitive, affective, and behavioral stages shape response over time. It also shows how hierarchy-of-effects models differ from AIDA, PAS, BAB, 5W1H, funnel models, buyer journeys, and generic conversion paths. The article includes advanced Python and R workflows for response-stage audits, stage-balance scoring, content-support mapping, evidence review, ethical-risk checks, and governance-ready communication reports.

Why Hierarchy of Effects Matters

Hierarchy-of-effects thinking matters because communication rarely works as a single-step event. A person may see a message without understanding it. They may understand it without trusting it. They may trust it without preferring it. They may prefer it without acting. They may act once without continuing, sharing, learning, or adopting. Response unfolds through layers.

This matters for editorial systems because different content types support different stages. A headline may create awareness. A definition may build knowledge. A comparison table may support preference. A case study may build trust. A checklist may support action. A follow-up guide may support confirmation. If every content asset is judged only by immediate conversion, earlier and later stages are misunderstood.

Hierarchy-of-effects models also help diagnose communication failure. If audiences do not act, the problem may not be the call to action. It may be weak awareness, poor comprehension, missing evidence, low trust, unclear relevance, weak preference, or insufficient implementation support. The model helps ask where the response pathway is breaking.

Communication issue Hierarchy-of-effects diagnosis Content-system response
People are not entering the content pathway. Awareness or attention is weak. Improve titles, excerpts, internal links, search snippets, and orientation.
People visit but do not understand the topic. Knowledge support is weak. Add definitions, examples, diagrams, and explanatory scaffolding.
People understand but remain unconvinced. Evaluation, trust, or evidence support is weak. Strengthen references, comparisons, case evidence, and limitation notes.
People agree but do not act. Action support is unclear or too difficult. Add practical steps, calls to action, implementation guidance, and next links.
People act once but do not continue. Follow-through, confirmation, or maintenance support is missing. Add onboarding, revision loops, feedback systems, and review pathways.

The framework helps content teams see communication as staged support rather than isolated output.

Back to top ↑

What Hierarchy of Effects Is

The Hierarchy of Effects is a communication model that organizes audience response into stages. The best-known marketing version moves from awareness to knowledge, liking, preference, conviction, and purchase. The broader logic is that audiences move through cognitive, affective, and behavioral responses before durable action becomes likely.

Cognitive stages involve noticing, recognizing, understanding, and remembering. Affective stages involve liking, evaluation, preference, trust, identification, and emotional response. Behavioral stages involve intention, action, adoption, use, repetition, recommendation, or follow-through.

The hierarchy is not a law. It is a model. Audiences do not always move through stages in the same order. Some people act first and evaluate later. Some already know the topic before they encounter the message. Some skip stages, loop backward, or require repeated exposure. Even so, the model is useful because it helps writers identify different forms of response.

Stage type Core response Communication question
Cognitive Awareness, attention, knowledge, comprehension, memory. Does the audience know what this is and understand it?
Affective Liking, trust, preference, relevance, emotional evaluation. Does the audience value, trust, or prefer this?
Behavioral Intention, action, adoption, purchase, participation, follow-through. Can the audience act, continue, or apply what is being communicated?

The Hierarchy of Effects is useful because it separates different response outcomes that are often collapsed into one vague goal: engagement.

Back to top ↑

Communication Response Models

Communication response models describe how audiences process, evaluate, and respond to messages. Some models emphasize persuasion. Some emphasize information processing. Some emphasize adoption, learning, diffusion, or behavior change. They differ in vocabulary, but many share a basic insight: response usually develops through stages.

AIDA emphasizes attention, interest, desire, and action. The classic Hierarchy of Effects emphasizes awareness, knowledge, liking, preference, conviction, and purchase. Innovation-adoption models emphasize knowledge, persuasion, decision, implementation, and confirmation. Communication-persuasion models often distinguish exposure, attention, comprehension, yielding, retention, and behavior.

These models are not interchangeable, but they can be compared. Each highlights different parts of audience movement. A content strategist can use them to decide whether a page should build awareness, explain knowledge, support evaluation, reduce uncertainty, guide action, or support continued use.

Model family Primary concern Useful for
Hierarchy of Effects Movement from awareness and knowledge to preference, conviction, and action. Campaign planning, content sequencing, stage diagnostics, measurement design.
AIDA Persuasive movement from attention to action. Landing pages, calls to action, introductions, campaign copy.
PAS / BAB Tension, transformation, and path-forward structure. Problem framing, transformation messaging, bridge logic.
Communication-persuasion matrix Message inputs and audience response outputs. Health communication, public communication, campaign testing.
Innovation adoption Movement from knowledge to persuasion, decision, implementation, and confirmation. Technology adoption, policy adoption, organizational change, public uptake.

Response models are useful when they help clarify what kind of audience change a message is designed to support.

Back to top ↑

Core Functions of Hierarchy-of-Effects Thinking

Hierarchy-of-effects thinking helps content systems organize communication around staged audience response rather than isolated content outputs.

It separates response types

The framework distinguishes awareness, understanding, attitude, preference, intention, action, and follow-through.

It improves content sequencing

It helps editors place orientation, explanation, evidence, comparison, action, and support content in a meaningful order.

It diagnoses stage gaps

When audiences do not act, the framework helps identify whether the missing support is cognitive, affective, or behavioral.

It supports measurement design

Different stages require different indicators, such as reach, comprehension, trust, preference, intent, action, and retention.

It improves audience fit

Different audiences may enter the sequence at different levels of awareness, trust, knowledge, or readiness.

It supports ethical review

Response modeling can be audited for pressure, manipulation, overclaiming, privacy risk, and conversion bias.

It strengthens editorial governance

Stage records can support content audits, revision queues, metadata, measurement plans, and publication readiness checks.

These functions make response models useful beyond advertising. They help explain how content supports movement through knowledge, judgment, and action.

Back to top ↑

Cognitive Response: Awareness, Attention, and Knowledge

Cognitive response is the first layer of many hierarchy-of-effects models. It concerns whether the audience notices, recognizes, understands, and remembers the message. Before someone can evaluate an idea, they usually need some orientation to what it is.

In content systems, cognitive support includes titles, excerpts, definitions, summaries, diagrams, introductory sections, article maps, navigation labels, internal links, metadata, and search snippets. These elements help people identify the topic and build a basic mental model.

Cognitive response should not be treated as superficial. Awareness without understanding is fragile. Traffic without comprehension is not meaningful learning. A reader may arrive at a page, skim, and leave because the topic is not oriented clearly enough.

Cognitive response Content support Review question
Awareness Title, excerpt, visual, search snippet, headline, social preview. Can the audience recognize that the topic exists and matters?
Attention Opening paragraph, relevant problem framing, clear visual hierarchy. Does the content invite continued engagement without exaggeration?
Knowledge Definitions, context sections, examples, basic explanations. Does the audience understand the core idea?
Comprehension Tables, diagrams, comparisons, methods, explanations, internal links. Can the audience explain the idea accurately?
Memory Structure, repetition, headings, summaries, reusable frameworks. Will the audience retain the useful structure?

The cognitive stage asks whether content makes the subject understandable before asking the audience to evaluate or act.

Back to top ↑

Affective Response: Liking, Preference, Trust, and Evaluation

Affective response concerns how the audience evaluates the message. This includes liking, relevance, trust, preference, identification, confidence, concern, curiosity, skepticism, or emotional response. In communication response models, affective stages connect knowledge to judgment.

Affective response does not mean emotional manipulation. It means the audience forms an attitude toward the idea, product, policy, method, organization, or content pathway. A reader may understand a framework but not trust it. They may understand a policy but dislike its tradeoffs. They may recognize an article series but not see why it is relevant to them.

Content can support affective response through evidence, credibility, tone, examples, transparency, fair comparison, limitation notes, ethical framing, visual design, and alignment with audience need. Trust is especially important in knowledge systems. Readers need to believe that the content is accurate, fair, useful, and maintained.

Affective response Content support Risk if missing
Liking Clear tone, approachable structure, useful examples. The audience understands but does not feel drawn to continue.
Relevance Audience context, use cases, problem fit, practical stakes. The audience sees the idea as abstract or unrelated.
Trust Evidence, references, transparency, authorial accountability. The audience doubts the claims or source.
Preference Comparison, tradeoffs, differentiated value, fit language. The audience cannot choose among alternatives.
Confidence Examples, implementation guidance, limitations, support pathways. The audience may agree but not feel ready to proceed.

Affective response is where communication becomes evaluation. It is the bridge between knowing and choosing.

Back to top ↑

Behavioral Response: Conviction, Intention, Action, and Follow-Through

Behavioral response concerns what the audience does. This may include clicking, subscribing, purchasing, registering, donating, applying a method, reading the next article, adopting a practice, changing a workflow, joining a public process, sharing a resource, or returning for continued learning.

In the classic hierarchy, behavioral movement is often represented through conviction and purchase. In broader content frameworks, behavior may mean much more than purchase. It can include learning, implementation, participation, revision, civic engagement, professional adoption, or continued inquiry.

Behavioral response requires support. A person may intend to act but fail because the next step is unclear, the action is too difficult, the path is inaccessible, the commitment is hidden, or the promised outcome is not credible. Calls to action should therefore be treated as response supports, not commands.

Behavioral response Content support Review question
Conviction Evidence, examples, comparison, clear rationale, trust signals. Does the audience have enough confidence to proceed?
Intention Specific next step, practical fit, timing, relevance. Does the audience know what they might do?
Action CTA, form, download, navigation, workflow, guide, contact point. Can the audience act without confusion?
Adoption Onboarding, documentation, support, examples, implementation pathway. Can the audience use the idea or method over time?
Follow-through Feedback, reminders, revision loops, learning pathways, governance. Can the action become durable understanding or practice?

Behavioral response is not just the final click. It includes whether the action is understandable, feasible, and supported after the moment of response.

Back to top ↑

The Classic Awareness-to-Purchase Sequence

The classic hierarchy-of-effects sequence is often expressed as awareness, knowledge, liking, preference, conviction, and purchase. This sequence has been especially influential in advertising and marketing because it connects communication objectives to different stages of audience response.

The sequence can be generalized beyond purchase. Awareness may become recognition of an issue. Knowledge may become understanding. Liking may become receptivity. Preference may become comparison or prioritization. Conviction may become confidence. Purchase may become action, adoption, participation, or application.

Classic stage Generalized meaning Content-framework application
Awareness The audience becomes aware of the idea, issue, resource, or offer. Titles, excerpts, search visibility, internal links, article maps.
Knowledge The audience understands basic meaning and context. Definitions, introductions, explainers, examples, diagrams.
Liking The audience responds positively or becomes receptive. Tone, clarity, usefulness, visual coherence, humane framing.
Preference The audience compares alternatives and sees relative fit. Comparison tables, criteria, tradeoffs, use cases.
Conviction The audience develops confidence or intention. Evidence, case support, limitations, transparent claims.
Purchase / Action The audience takes a next step. CTA, repository link, download, next article, method application, registration.

The classic sequence is most useful when it is interpreted flexibly and responsibly. Not every content system is selling something, but nearly every content system supports some form of response.

Back to top ↑

Comparing Response Models

Communication response models can be compared by the kinds of movement they emphasize. Some models emphasize persuasion and action. Others emphasize comprehension, attitude, adoption, or behavior change. Content frameworks can draw from multiple models, but they should not combine them mechanically.

A strong model comparison asks which response problem is being solved. Is the audience unaware? Confused? Skeptical? Interested but unconvinced? Convinced but inactive? Active once but not retained? Each condition requires a different kind of content support.

Model Typical sequence Best used when
Hierarchy of Effects Awareness → Knowledge → Liking → Preference → Conviction → Action. The goal is to diagnose staged audience response across a campaign or content pathway.
AIDA Attention → Interest → Desire → Action. The goal is to structure a persuasive message or page.
PAS Problem → Agitate → Solution. The goal is to clarify a problem, stakes, and solution fit.
BAB Before → After → Bridge. The goal is to frame transformation and show a path forward.
Innovation adoption Knowledge → Persuasion → Decision → Implementation → Confirmation. The goal is to support adoption of an idea, tool, practice, or technology over time.
Communication-persuasion matrix Exposure → Attention → Comprehension → Acceptance → Retention → Behavior. The goal is to analyze message inputs and response outputs systematically.

The best model is not the most famous one. The best model is the one that matches the communication problem, audience state, evidence base, and ethical context.

Back to top ↑

Hierarchy of Effects vs AIDA, PAS, BAB, and 5W1H

The Hierarchy of Effects overlaps with AIDA, PAS, BAB, and 5W1H, but it performs a different job. AIDA is a persuasive-sequence framework. PAS and BAB are tension and transformation frameworks. 5W1H is an explanatory-completeness framework. The Hierarchy of Effects is a response-stage framework.

This distinction matters. AIDA asks how a message can move attention toward action. PAS asks how problem tension can support a solution. BAB asks how current and desired states are connected. 5W1H asks whether the explanation answers the necessary questions. The Hierarchy of Effects asks what kind of audience response has occurred and what stage still needs support.

Framework Main focus Primary diagnostic question
Hierarchy of Effects Stages of audience response. Where is the audience in the response pathway?
AIDA Persuasive message sequence. Does the message move from attention to action responsibly?
PAS Problem, stakes, and solution. Is the problem real, the agitation proportionate, and the solution fit clear?
BAB Before, after, and bridge. Is the transformation credible and the bridge clear?
5W1H Explanatory completeness. Does the content answer who, what, when, where, why, and how?

The frameworks can complement one another. A persuasive page might use AIDA structure, PAS tension, BAB transformation, 5W1H explanatory completeness, and hierarchy-of-effects diagnostics. The risk is not using multiple frameworks. The risk is combining them without clarity.

Back to top ↑

Hierarchy of Effects in Content Frameworks

In content frameworks, hierarchy-of-effects thinking helps organize article maps, pillar pages, topic clusters, learning pathways, campaigns, and repository workflows around audience readiness. It asks what content supports awareness, what content supports understanding, what content supports evaluation, what content supports action, and what content supports continued use.

This is especially important for large knowledge systems. Not every article should do everything. Some articles orient. Some define. Some compare. Some persuade. Some teach methods. Some provide code. Some govern quality. A hierarchy-of-effects lens helps assign content roles across the system.

Hierarchy-of-effects thinking can support content frameworks through:

  • article maps that move from orientation to methods, applications, critique, and governance;
  • pillar pages that build awareness and knowledge before deeper articles;
  • internal links that guide readers to the next stage of understanding;
  • metadata fields that identify response stage and audience readiness;
  • GitHub blocks that convert knowledge into practical application;
  • case studies that support trust, preference, and confidence;
  • footer navigation that provides a clear next step;
  • audits that detect missing stage support across a content system.

When embedded in content architecture, response modeling helps a knowledge system become more than a collection of pages. It becomes a staged learning and action environment.

Back to top ↑

Measurement, Diagnosis, and Stage Gaps

Hierarchy-of-effects models are useful for measurement because they discourage one-metric thinking. Page views may indicate exposure or awareness, but not comprehension. Time on page may suggest engagement, but not trust. Click-through may indicate intent, but not durable understanding. Conversion may indicate action, but not long-term adoption.

Each stage requires different signals. The goal is not to turn every human response into a number. The goal is to avoid confusing one signal with the whole response pathway. A content team should define what kind of response a page is designed to support and then choose appropriate evidence.

Response stage Possible indicators Interpretation caution
Awareness Impressions, search visibility, referral traffic, headline recognition. Awareness does not prove understanding.
Knowledge Scroll depth, quiz results, search refinement, support questions, comprehension checks. Engagement does not prove accurate comprehension.
Liking / Trust Return visits, qualitative feedback, source confidence, sentiment, sharing. Positive response does not prove evidence quality.
Preference Comparison page use, saved resources, repeat selection, recommendation behavior. Preference may reflect convenience rather than informed judgment.
Conviction / Intention Download intent, registration starts, contact requests, checklist use. Intention may not convert into action.
Action / Adoption Completed forms, repository use, signups, implementation records, repeat use. Action does not prove long-term value or ethical success.

Good measurement respects stage differences. It does not pretend that one metric can explain the whole communication response process.

Back to top ↑

Ethical Risks in Response Modeling

Response models can be useful, but they also create ethical risks. A model that tracks movement from awareness to action can be used to support learning, public reasoning, and useful adoption. It can also be used to manipulate attention, exploit emotion, pressure action, or optimize conversion while weakening trust.

The ethical problem is not that communication seeks response. All communication seeks some form of response. The problem is when response goals override evidence, agency, privacy, accessibility, proportionality, or audience well-being.

Hierarchy-of-effects thinking should therefore be paired with ethical review. Does the awareness stage rely on exaggeration? Does the affective stage manufacture trust? Does the preference stage hide tradeoffs? Does the conviction stage overstate evidence? Does the action stage use pressure, false urgency, dark patterns, or hidden commitments?

Stage Ethical risk Responsible review question
Awareness Clickbait, shock, misleading attention cues. Does the opening accurately represent the content?
Knowledge Simplification that removes necessary context. Does the explanation preserve what readers need to know?
Liking Emotional design that substitutes feeling for evidence. Does tone support trust without manipulating response?
Preference Biased comparison, hidden alternatives, missing tradeoffs. Can readers compare options fairly?
Conviction Overclaiming certainty or evidence strength. Are claims proportionate to evidence?
Action False urgency, hidden conditions, dark patterns, pressure. Is the next step transparent and agency-preserving?

Ethical response modeling supports agency. It does not treat people as objects to be moved through a pipeline.

Back to top ↑

Governance and Review

Hierarchy-of-effects models should be governed because response assumptions can drift. A content system may begin with educational goals but gradually optimize only for clicks, signups, or conversions. Awareness content may become more sensational. Evidence content may become thinner. Action prompts may become more aggressive. Governance helps keep the response model aligned with editorial purpose.

A governance process should track which content assets support which response stages, whether the stage labels are accurate, whether evidence supports stage claims, whether calls to action are proportionate, and whether measurement practices create perverse incentives.

Governance task Review question Why it matters
Stage mapping Which response stage does this asset support? Prevents every asset from being judged as conversion content.
Evidence review Are knowledge, trust, and conviction claims supported? Protects credibility.
Measurement review Do metrics match the intended stage? Prevents false interpretation of performance data.
CTA review Is the action appropriate for audience readiness? Prevents premature pressure.
Accessibility review Can users understand and complete the intended response? Supports inclusion and usability.
Ethical review Does the model preserve agency and avoid manipulation? Maintains trust.

Governance turns response models from campaign planning tools into accountable editorial infrastructure.

Back to top ↑

Risks and Limits

The Hierarchy of Effects is useful, but it is limited. It can make communication response easier to analyze, but it can also imply a neat sequence that real audiences do not follow. People do not always move from awareness to knowledge to liking to preference to conviction to action. They may loop, skip, resist, compare, forget, act impulsively, or change after social influence.

The model can also overemphasize individual response. Many communication outcomes are shaped by social context, institutional trust, cultural meaning, platform design, policy constraints, economic conditions, and peer networks. A person’s response is not only a product of message sequence.

Another risk is measurement reduction. If each stage is assigned a metric, the metric may begin to replace the purpose of the stage. Awareness becomes impressions. Knowledge becomes page time. Liking becomes sentiment. Action becomes conversion. These indicators can help, but they are not the response itself.

Limit What goes wrong Better practice
Linear assumption Audience movement is treated as predictable and uniform. Allow loops, re-entry points, skipped stages, and repeated exposure.
Individual bias Social, cultural, institutional, and structural factors are ignored. Connect response models to audience context and systems thinking.
Metric substitution Stage indicators are mistaken for stage outcomes. Use metrics as signals, not proof.
Conversion bias All response is treated as immediate action. Value learning, trust, reflection, adoption, and follow-through.
Over-modeling The model becomes more important than the audience. Use response models as diagnostic aids, not rigid laws.

The model is strongest when it helps clarify audience support needs, not when it claims to predict behavior with certainty.

Back to top ↑

Mathematics, Computation, and Modeling

Hierarchy-of-effects thinking can be modeled computationally by treating each response stage as a support signal. A content audit can evaluate whether assets support awareness, knowledge, liking, preference, conviction, action, and follow-through. These models do not prove audience response, but they can reveal stage gaps across a content system.

\[
C_i = \frac{\sum_{s=1}^{n} S_{is}}{n}
\]

Interpretation: Stage coverage \(C_i\) estimates how many response stages are supported by content asset \(i\), where \(S_{is}\) indicates support for stage \(s\).

\[
B_i = 1 – \frac{\sigma(S_i)}{\mu(S_i)}
\]

Interpretation: Stage balance \(B_i\) estimates whether support is distributed proportionately across the stages relevant to an asset’s purpose.

\[
R_i = w_1C_i + w_2E_i + w_3B_i + w_4A_i + w_5G_i
\]

Interpretation: Response readiness \(R_i\) can combine stage coverage, evidence support, balance, audience fit, and governance readiness.

\[
Q = \{i : R_i < \tau \lor G_i < \gamma\}
\]

Interpretation: A governance queue \(Q\) can flag content assets whose response readiness falls below threshold \(\tau\) or whose governance support falls below minimum standard \(\gamma\).

These formulas support editorial review. They cannot determine whether audiences truly moved through the stages, nor can they replace qualitative research, usability testing, ethical review, or long-term outcome evaluation.

Back to top ↑

Python Workflow: Professional Communication Response Audit

A professional response-model audit should evaluate stage coverage, evidence support, audience fit, response balance, measurement alignment, ethical risk, and governance readiness. The Python workflow below uses only the standard library and produces CSV and JSON outputs.

#!/usr/bin/env python3
"""
Hierarchy of Effects and communication response audit workflow.

This workflow evaluates:
- awareness, knowledge, liking, preference, conviction, action, and follow-through support
- evidence support for response-stage claims
- stage balance
- audience fit
- measurement alignment
- ethical-risk flags
- governance queues
- catalog exports

Uses only the Python standard library.
"""

from __future__ import annotations

from pathlib import Path
from dataclasses import dataclass, asdict
from collections import defaultdict
from datetime import datetime, timezone
import csv
import json
import math

ROOT = Path(__file__).resolve().parents[1]
DATA = ROOT / "data"
TABLES = ROOT / "outputs" / "tables"
REPORTS = ROOT / "outputs" / "reports"
AUDIT_LOGS = ROOT / "outputs" / "audit_logs"
CATALOG_EXPORTS = ROOT / "outputs" / "catalog_exports"

STAGES = ["awareness", "knowledge", "liking", "preference", "conviction", "action", "follow_through"]
READINESS_THRESHOLD = 0.78
GOVERNANCE_MINIMUM = 0.70

WEIGHTS = {
    "stage_coverage": 0.22,
    "evidence_support": 0.22,
    "stage_balance": 0.16,
    "audience_fit": 0.16,
    "governance": 0.14,
    "ethical_review": 0.10
}


@dataclass(frozen=True)
class Finding:
    severity: str
    category: str
    identifier: str
    message: str
    recommended_action: str


def ensure_dirs() -> None:
    for directory in [TABLES, REPORTS, AUDIT_LOGS, CATALOG_EXPORTS]:
        directory.mkdir(parents=True, exist_ok=True)


def read_csv(path: Path) -> list[dict[str, str]]:
    with path.open(newline="", encoding="utf-8") as handle:
        return list(csv.DictReader(handle))


def write_csv(path: Path, rows: list[dict[str, object]]) -> None:
    if not rows:
        return
    path.parent.mkdir(parents=True, exist_ok=True)
    with path.open("w", newline="", encoding="utf-8") as handle:
        writer = csv.DictWriter(handle, fieldnames=list(rows[0].keys()))
        writer.writeheader()
        writer.writerows(rows)


def write_json(path: Path, payload: object) -> None:
    path.parent.mkdir(parents=True, exist_ok=True)
    path.write_text(json.dumps(payload, indent=2), encoding="utf-8")


def yes(value: str) -> bool:
    return str(value).strip().lower() in {"yes", "true", "1", "ready", "complete"}


def average(values: list[float]) -> float:
    return sum(values) / len(values) if values else 0.0


def balance_score(values: list[float]) -> float:
    mean_value = average(values)
    if mean_value == 0:
        return 0.0

    variance = average([(value - mean_value) ** 2 for value in values])
    standard_deviation = math.sqrt(variance)
    balance = 1 - min(standard_deviation / mean_value, 1)
    return max(0.0, min(balance, 1.0))


def severity_rank(severity: str) -> int:
    return {"critical": 0, "high": 1, "medium": 2, "low": 3, "info": 4}.get(severity, 99)


def score_asset(asset: dict[str, str]) -> dict[str, float]:
    stage_values = [int(yes(asset[f"{stage}_supported"])) for stage in STAGES]
    evidence_values = [
        int(yes(asset[f"{stage}_evidence_present"]))
        for stage in STAGES
        if yes(asset[f"{stage}_supported"])
    ]

    stage_coverage = sum(stage_values) / len(STAGES)
    evidence_support = average(evidence_values) if evidence_values else 0.0
    stage_balance = balance_score(stage_values)

    audience_fit = (
        int(yes(asset["audience_context_present"])) +
        int(yes(asset["audience_readiness_defined"])) +
        int(yes(asset["next_step_matches_stage"]))
    ) / 3

    governance = (
        int(yes(asset["measurement_aligned"])) +
        int(yes(asset["review_owner_present"])) +
        int(yes(asset["last_review_date_present"])) +
        int(yes(asset["revision_queue_checked"]))
    ) / 4

    ethical_review = (
        int(not yes(asset["uses_false_urgency"])) +
        int(not yes(asset["overclaims_response"])) +
        int(not yes(asset["uses_pressure_cta"])) +
        int(yes(asset["audience_agency_preserved"]))
    ) / 4

    readiness = (
        WEIGHTS["stage_coverage"] * stage_coverage +
        WEIGHTS["evidence_support"] * evidence_support +
        WEIGHTS["stage_balance"] * stage_balance +
        WEIGHTS["audience_fit"] * audience_fit +
        WEIGHTS["governance"] * governance +
        WEIGHTS["ethical_review"] * ethical_review
    )

    return {
        "stage_coverage_score": round(stage_coverage, 4),
        "evidence_support_score": round(evidence_support, 4),
        "stage_balance_score": round(stage_balance, 4),
        "audience_fit_score": round(audience_fit, 4),
        "governance_score": round(governance, 4),
        "ethical_review_score": round(ethical_review, 4),
        "response_readiness_score": round(readiness, 4)
    }


def audit_assets(assets: list[dict[str, str]]):
    rows = []
    findings = []

    for asset in assets:
        scores = score_asset(asset)
        status = "ready" if scores["response_readiness_score"] >= READINESS_THRESHOLD and scores["governance_score"] >= GOVERNANCE_MINIMUM else "governance review"

        unsupported_stages = [
            stage for stage in STAGES
            if yes(asset[f"{stage}_supported"]) and not yes(asset[f"{stage}_evidence_present"])
        ]

        missing_stage_support = [
            stage for stage in STAGES
            if not yes(asset[f"{stage}_supported"])
        ]

        row = {
            "asset_id": asset["asset_id"],
            "asset_name": asset["asset_name"],
            "asset_type": asset["asset_type"],
            "primary_response_stage": asset["primary_response_stage"],
            "audience": asset["audience"],
            **scores,
            "missing_stage_support": ";".join(missing_stage_support),
            "unsupported_stage_claims": ";".join(unsupported_stages),
            "response_status": status
        }

        rows.append(row)

        if scores["stage_coverage_score"] < 0.50:
            findings.append(Finding(
                "medium",
                "stage_coverage",
                asset["asset_id"],
                "Response-stage coverage is narrow.",
                "Confirm that narrow stage coverage is intentional or add supporting assets."
            ))

        if unsupported_stages:
            findings.append(Finding(
                "high",
                "evidence_support",
                asset["asset_id"],
                f"Supported response stages lack evidence: {', '.join(unsupported_stages)}.",
                "Add evidence, examples, measurement notes, or limitation language."
            ))

        if scores["audience_fit_score"] < 0.67:
            findings.append(Finding(
                "medium",
                "audience_fit",
                asset["asset_id"],
                "Audience readiness support is weak.",
                "Define audience context, readiness level, and next-step fit."
            ))

        if scores["ethical_review_score"] < 0.75:
            findings.append(Finding(
                "high",
                "ethical_review",
                asset["asset_id"],
                "Ethical review score is below standard.",
                "Remove false urgency, pressure CTAs, overclaiming, or agency-reducing language."
            ))

        if status != "ready":
            findings.append(Finding(
                "medium",
                "response_readiness",
                asset["asset_id"],
                f"Response readiness is {scores['response_readiness_score']:.2f}.",
                "Review stage support, evidence support, audience fit, governance, and ethical-risk flags."
            ))

    return rows, findings


def stage_summary(assets: list[dict[str, str]]):
    rows = []
    for stage in STAGES:
        supported = sum(1 for asset in assets if yes(asset[f"{stage}_supported"]))
        evidence = sum(
            1 for asset in assets
            if yes(asset[f"{stage}_supported"]) and yes(asset[f"{stage}_evidence_present"])
        )
        rows.append({
            "response_stage": stage,
            "assets_supporting_stage": supported,
            "assets_with_evidence": evidence,
            "support_rate": round(supported / len(assets), 4) if assets else 0,
            "evidence_rate": round(evidence / supported, 4) if supported else 0
        })
    return rows


def audience_summary(readiness_rows):
    grouped = defaultdict(list)
    for row in readiness_rows:
        grouped[row["audience"]].append(float(row["response_readiness_score"]))

    return [{
        "audience": audience,
        "asset_count": len(scores),
        "average_response_readiness": round(average(scores), 4)
    } for audience, scores in sorted(grouped.items())]


def governance_queue(manual_queue, findings):
    rows = []

    for item in manual_queue:
        rows.append({
            "source": "manual_review_queue",
            "severity": item["severity"],
            "category": item["issue_type"],
            "identifier": item["record_id"],
            "message": item["review_note"],
            "recommended_action": "Resolve through communication response governance."
        })

    for finding in findings:
        rows.append({
            "source": "automated_response_audit",
            "severity": finding.severity,
            "category": finding.category,
            "identifier": finding.identifier,
            "message": finding.message,
            "recommended_action": finding.recommended_action
        })

    rows.sort(key=lambda row: (severity_rank(row["severity"]), row["category"], row["identifier"]))
    return rows


def main():
    ensure_dirs()

    assets = read_csv(DATA / "communication_response_inventory.csv")
    manual_queue = read_csv(DATA / "editorial_review_queue.csv")

    readiness_rows, findings = audit_assets(assets)
    stage_rows = stage_summary(assets)
    audience_rows = audience_summary(readiness_rows)
    queue_rows = governance_queue(manual_queue, findings)

    catalog_rows = [{
        "series": "Content Frameworks",
        "article_slug": "hierarchy-of-effects-and-communication-response-models",
        "asset_id": row["asset_id"],
        "asset_name": row["asset_name"],
        "asset_type": row["asset_type"],
        "primary_response_stage": row["primary_response_stage"],
        "audience": row["audience"],
        "response_readiness_score": row["response_readiness_score"],
        "response_status": row["response_status"],
        "github_path": "articles/hierarchy-of-effects-and-communication-response-models/"
    } for row in readiness_rows]

    write_csv(TABLES / "communication_response_readiness_report.csv", readiness_rows)
    write_csv(TABLES / "communication_response_stage_summary_report.csv", stage_rows)
    write_csv(TABLES / "communication_response_audience_summary_report.csv", audience_rows)
    write_csv(TABLES / "communication_response_governance_queue.csv", queue_rows)
    write_csv(CATALOG_EXPORTS / "communication_response_catalog_export.csv", catalog_rows)

    report = {
        "article": "Hierarchy of Effects and Communication Response Models",
        "generated_at": datetime.now(timezone.utc).isoformat(),
        "counts": {
            "assets": len(assets),
            "findings": len(findings),
            "governance_queue": len(queue_rows)
        },
        "stage_summary": stage_rows,
        "readiness": readiness_rows,
        "governance_queue": queue_rows
    }

    write_json(REPORTS / "communication_response_audit.json", report)
    write_json(AUDIT_LOGS / "communication_response_findings.json", [asdict(finding) for finding in findings])

    print("Communication response audit complete.")
    print(TABLES / "communication_response_readiness_report.csv")
    print(TABLES / "communication_response_governance_queue.csv")
    print(REPORTS / "communication_response_audit.json")


if __name__ == "__main__":
    main()

This workflow treats response models as editorial infrastructure. It evaluates whether content assets support audience movement across awareness, knowledge, liking, preference, conviction, action, and follow-through while also checking evidence, audience fit, governance, and ethical risk.

Back to top ↑

R Workflow: Stage Balance, Content Support, and Governance Reporting

An R workflow can summarize communication response support across content assets, audiences, stage types, evidence support, measurement alignment, and governance status. The example below uses base R so it can run in lightweight environments.

# communication_response_analysis.R
# Base R workflow for hierarchy-of-effects and communication response audits.

args <- commandArgs(trailingOnly = FALSE)
file_arg <- grep("^--file=", args, value = TRUE)

if (length(file_arg) > 0) {
  script_path <- normalizePath(sub("^--file=", "", file_arg[1]), mustWork = TRUE)
  article_root <- normalizePath(file.path(dirname(script_path), ".."), mustWork = TRUE)
} else {
  article_root <- getwd()
}

data_dir <- file.path(article_root, "data")
tables_dir <- file.path(article_root, "outputs", "tables")
figures_dir <- file.path(article_root, "outputs", "figures")
reports_dir <- file.path(article_root, "outputs", "reports")
catalog_dir <- file.path(article_root, "outputs", "catalog_exports")

dir.create(tables_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(figures_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(reports_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(catalog_dir, recursive = TRUE, showWarnings = FALSE)

assets <- read.csv(file.path(data_dir, "communication_response_inventory.csv"), stringsAsFactors = FALSE)
review_queue <- read.csv(file.path(data_dir, "editorial_review_queue.csv"), stringsAsFactors = FALSE)

yes <- function(x) {
  tolower(trimws(x)) %in% c("yes", "true", "1", "ready", "complete")
}

balance_score <- function(values) {
  mean_value <- mean(values)
  if (mean_value == 0) return(0)
  balance <- 1 - min(sd(values) / mean_value, 1)
  max(0, min(balance, 1))
}

stages <- c(
  "awareness",
  "knowledge",
  "liking",
  "preference",
  "conviction",
  "action",
  "follow_through"
)

stage_matrix <- sapply(stages, function(stage) yes(assets[[paste0(stage, "_supported")]]))
evidence_matrix <- sapply(stages, function(stage) yes(assets[[paste0(stage, "_evidence_present")]]))

assets$stage_coverage_score <- round(rowMeans(stage_matrix), 4)

supported_evidence_counts <- rowSums(stage_matrix & evidence_matrix)
supported_stage_counts <- rowSums(stage_matrix)

assets$evidence_support_score <- ifelse(
  supported_stage_counts == 0,
  0,
  supported_evidence_counts / supported_stage_counts
)

assets$evidence_support_score <- round(assets$evidence_support_score, 4)

assets$stage_balance_score <- apply(stage_matrix, 1, balance_score)
assets$stage_balance_score <- round(assets$stage_balance_score, 4)

assets$audience_fit_score <- round(
  (
    yes(assets$audience_context_present) +
      yes(assets$audience_readiness_defined) +
      yes(assets$next_step_matches_stage)
  ) / 3,
  4
)

assets$governance_score <- round(
  (
    yes(assets$measurement_aligned) +
      yes(assets$review_owner_present) +
      yes(assets$last_review_date_present) +
      yes(assets$revision_queue_checked)
  ) / 4,
  4
)

assets$ethical_review_score <- round(
  (
    !yes(assets$uses_false_urgency) +
      !yes(assets$overclaims_response) +
      !yes(assets$uses_pressure_cta) +
      yes(assets$audience_agency_preserved)
  ) / 4,
  4
)

assets$response_readiness_score <- round(
  0.22 * assets$stage_coverage_score +
    0.22 * assets$evidence_support_score +
    0.16 * assets$stage_balance_score +
    0.16 * assets$audience_fit_score +
    0.14 * assets$governance_score +
    0.10 * assets$ethical_review_score,
  4
)

assets$response_status <- ifelse(
  assets$response_readiness_score >= 0.78 & assets$governance_score >= 0.70,
  "ready",
  "governance review"
)

stage_summary <- data.frame(
  response_stage = stages,
  assets_supporting_stage = colSums(stage_matrix),
  assets_with_evidence = colSums(stage_matrix & evidence_matrix)
)

stage_summary$support_rate <- round(stage_summary$assets_supporting_stage / nrow(assets), 4)
stage_summary$evidence_rate <- ifelse(
  stage_summary$assets_supporting_stage == 0,
  0,
  round(stage_summary$assets_with_evidence / stage_summary$assets_supporting_stage, 4)
)

audience_summary <- aggregate(
  response_readiness_score ~ audience,
  data = assets,
  FUN = mean
)

names(audience_summary) <- c("audience", "average_response_readiness")
audience_summary$average_response_readiness <- round(audience_summary$average_response_readiness, 4)

asset_type_summary <- aggregate(
  response_readiness_score ~ asset_type,
  data = assets,
  FUN = mean
)

names(asset_type_summary) <- c("asset_type", "average_response_readiness")
asset_type_summary$average_response_readiness <- round(asset_type_summary$average_response_readiness, 4)

governance_queue <- subset(assets, response_status == "governance review")

catalog <- assets[, c(
  "asset_id",
  "asset_name",
  "asset_type",
  "primary_response_stage",
  "audience",
  "response_readiness_score",
  "response_status"
)]

catalog$series <- "Content Frameworks"
catalog$article_slug <- "hierarchy-of-effects-and-communication-response-models"
catalog$github_path <- "articles/hierarchy-of-effects-and-communication-response-models/"

write.csv(assets, file.path(tables_dir, "r_communication_response_readiness_report.csv"), row.names = FALSE)
write.csv(stage_summary, file.path(tables_dir, "r_communication_response_stage_summary_report.csv"), row.names = FALSE)
write.csv(audience_summary, file.path(tables_dir, "r_communication_response_audience_summary_report.csv"), row.names = FALSE)
write.csv(asset_type_summary, file.path(tables_dir, "r_communication_response_asset_type_summary_report.csv"), row.names = FALSE)
write.csv(governance_queue, file.path(tables_dir, "r_communication_response_governance_queue.csv"), row.names = FALSE)
write.csv(catalog, file.path(catalog_dir, "r_communication_response_catalog_export.csv"), row.names = FALSE)

png(file.path(figures_dir, "r_communication_response_readiness_scores.png"), width = 1200, height = 800)
barplot(
  assets$response_readiness_score,
  names.arg = assets$asset_id,
  las = 2,
  main = "Communication Response Readiness Scores",
  ylab = "Readiness score"
)
dev.off()

png(file.path(figures_dir, "r_communication_response_stage_support.png"), width = 1100, height = 750)
barplot(
  stage_summary$support_rate,
  names.arg = stage_summary$response_stage,
  las = 2,
  main = "Response Stage Support",
  ylab = "Support rate"
)
dev.off()

writeLines(c(
  "# Hierarchy of Effects and Communication Response Models: R Audit",
  "",
  paste0("- Content assets: ", nrow(assets)),
  paste0("- Manual review queue records: ", nrow(review_queue)),
  paste0("- Average response readiness score: ", round(mean(assets$response_readiness_score), 4)),
  paste0("- Assets requiring governance review: ", nrow(governance_queue))
), file.path(reports_dir, "r_communication_response_report.md"))

print("Communication response R analysis complete.")
print(assets[, c("asset_id", "primary_response_stage", "response_readiness_score", "response_status")])

This R workflow summarizes stage support, evidence support, response readiness, audience fit, asset-type performance, and governance review needs across communication assets.

Back to top ↑

GitHub repository

The companion repository provides a reproducible technical scaffold for the article’s computational examples, including communication-response inventories, stage coverage analysis, evidence-support review, stage-balance scoring, audience-fit checks, measurement alignment, ethical-risk checks, governance queues, synthetic data, generated outputs, and reproducibility documentation.

Back to top ↑

A Practical Method for Using Response Models Responsibly

A practical hierarchy-of-effects method begins by defining the response stage the content is meant to support. The goal is not to push every audience toward immediate action, but to provide the right support for the right stage of understanding, evaluation, and readiness.

1. Define the audience state

Identify whether the audience is unaware, aware but confused, informed but skeptical, interested but undecided, convinced but inactive, or active but unsupported.

2. Identify the primary response stage

Decide whether the asset should support awareness, knowledge, liking, preference, conviction, action, or follow-through.

3. Match content to stage

Use titles and summaries for awareness, explanations for knowledge, evidence for trust, comparisons for preference, and clear pathways for action.

4. Define stage-appropriate evidence

Clarify what support is needed for each stage: examples, references, cases, metrics, user guidance, or implementation notes.

5. Align measurement

Choose indicators that match the intended response stage rather than using conversion metrics for every asset.

6. Check sequence fit

Make sure the next step is appropriate for audience readiness.

7. Review ethical risks

Check for false urgency, pressure, overclaiming, hidden tradeoffs, and agency-reducing design.

8. Support accessibility

Make the response pathway understandable through headings, links, buttons, captions, summaries, and plain language.

9. Connect internal pathways

Use related articles, article maps, and footer navigation to support movement across stages.

10. Govern and revise

Track stage labels, evidence, metrics, calls to action, review dates, and revision queues over time.

Design step Question Output
Audience-state definition Where is the audience now? Audience readiness note.
Stage selection Which response stage should this asset support? Primary response-stage label.
Content support What kind of content fits the stage? Asset design plan.
Evidence review What supports the stage claim? Evidence and limitation notes.
Measurement alignment How will the stage be evaluated? Stage-appropriate metric set.
Ethical review Does the content preserve agency? Risk checklist and revision notes.
Governance How will the model stay accurate? Review status and update queue.

This method turns response modeling into a responsible editorial-design process rather than a conversion funnel disguised as communication theory.

Back to top ↑

Common Pitfalls

Hierarchy-of-effects models often fail when they are treated as rigid sequences or as automatic paths to action. Their value lies in diagnosis, not deterministic prediction.

Pitfall What goes wrong Better practice
Treating the hierarchy as universal Different audience pathways are ignored. Allow loops, skipped stages, re-entry points, and context differences.
Using conversion as the only outcome Awareness, knowledge, trust, and adoption are undervalued. Use stage-appropriate goals and measurements.
Assuming awareness means understanding Traffic is mistaken for comprehension. Add knowledge support and comprehension checks.
Assuming understanding means trust The audience knows the message but remains unconvinced. Use evidence, examples, transparency, and limitation notes.
Using premature CTAs The action request appears before the audience is ready. Match next steps to response stage.
Overclaiming behavioral causality The content is credited with outcomes it may not have caused. Treat metrics as signals and use cautious interpretation.
Ignoring ethics Response optimization becomes manipulation. Pair response models with agency, evidence, and accessibility review.

Response models work best when they help content teams ask better questions about audience readiness.

Back to top ↑

Why This Matters Now

Hierarchy-of-effects thinking matters now because digital communication is often judged by immediate and visible metrics. Clicks, impressions, views, signups, and conversions are easier to count than comprehension, trust, preference, confidence, adoption, or long-term use. This can distort content strategy.

AI-assisted publishing makes response modeling more important. A system can generate large volumes of content, but volume does not guarantee that readers are moving from awareness to understanding, evaluation, action, or durable use. Without stage diagnosis, a content system may grow quickly while leaving major response gaps.

For public-interest publishing, response models should support learning and agency rather than manipulation. The desired response may be informed judgment, civic participation, responsible adoption, ethical reflection, or continued inquiry. These outcomes require different supports than immediate conversion.

For Content Catalyst’s knowledge architecture, the Hierarchy of Effects offers a useful audit lens. It can help identify which articles orient, which explain, which compare, which persuade, which support action, and which maintain trust over time.

Audience response is not a single event. Responsible communication must support the pathway.

Back to top ↑

Conclusion

The Hierarchy of Effects and communication response models help writers, editors, strategists, educators, and researchers understand how audiences move through awareness, knowledge, evaluation, preference, conviction, action, and follow-through. The framework is useful because it separates stages that are often collapsed into a single idea of engagement.

Used well, hierarchy-of-effects thinking improves content sequencing, stage diagnosis, measurement design, internal linking, calls to action, and editorial governance. It helps content teams ask whether they are supporting the audience’s actual state rather than forcing every asset to behave like a conversion page.

Used poorly, the model can become overly linear, metric-driven, manipulative, or blind to social context. That is why response models should be paired with evidence architecture, audience research, accessibility, ethical review, and governance.

For content frameworks, the Hierarchy of Effects is not merely an advertising model. It is a durable way to think about how communication supports movement through knowledge, judgment, trust, and responsible action.

Back to top ↑

Further reading

  • Barry, T.E. (1987) ‘The Development of the Hierarchy of Effects: An Historical Perspective’, Current Issues and Research in Advertising, 10(1–2), pp. 251–295.
  • Cialdini, R.B. (2021) Influence, New and Expanded: The Psychology of Persuasion. New York: Harper Business. Available at: https://cialdini.com/
  • Heath, C. and Heath, D. (2007) Made to Stick: Why Some Ideas Survive and Others Die. New York: Random House.
  • Lavidge, R.J. and Steiner, G.A. (1961) ‘A model for predictive measurements of advertising effectiveness’, Journal of Marketing, 25(6), pp. 59–62. Available at: https://doi.org/10.1177/002224296102500611
  • McGuire, W.J. (1985) ‘Attitudes and attitude change’, in Lindzey, G. and Aronson, E. (eds.) The Handbook of Social Psychology. 3rd edn. New York: Random House.
  • National Academies of Sciences, Engineering, and Medicine (2017) Communicating Science Effectively: A Research Agenda. Washington, DC: The National Academies Press. Available at: https://doi.org/10.17226/23674
  • Perloff, R.M. (2020) The Dynamics of Persuasion: Communication and Attitudes in the 21st Century. 7th edn. New York: Routledge. Available at: https://www.routledge.com/The-Dynamics-of-Persuasion-Communication-and-Attitudes-in-the-21st-Century/Perloff/p/book/9780367185794
  • Rogers, E.M. (2003) Diffusion of Innovations. 5th edn. New York: Free Press.
  • Strong, E.K. (1925) The Psychology of Selling and Advertising. New York: McGraw-Hill. Available at: https://www.si.edu/object/siris_sil_383577
  • Toulmin, S.E. (2003) The Uses of Argument. Updated edn. Cambridge: Cambridge University Press. Available at: https://doi.org/10.1017/CBO9780511840005
  • World Wide Web Consortium (2024) Web Content Accessibility Guidelines (WCAG) 2.2. Available at: https://www.w3.org/TR/WCAG22/

References

  • Barry, T.E. (1987) ‘The Development of the Hierarchy of Effects: An Historical Perspective’, Current Issues and Research in Advertising, 10(1–2), pp. 251–295.
  • Cialdini, R.B. (2021) Influence, New and Expanded: The Psychology of Persuasion. New York: Harper Business. Available at: https://cialdini.com/
  • Heath, C. and Heath, D. (2007) Made to Stick: Why Some Ideas Survive and Others Die. New York: Random House.
  • Lavidge, R.J. and Steiner, G.A. (1961) ‘A model for predictive measurements of advertising effectiveness’, Journal of Marketing, 25(6), pp. 59–62. Available at: https://doi.org/10.1177/002224296102500611
  • McGuire, W.J. (1985) ‘Attitudes and attitude change’, in Lindzey, G. and Aronson, E. (eds.) The Handbook of Social Psychology. 3rd edn. New York: Random House.
  • National Academies of Sciences, Engineering, and Medicine (2017) Communicating Science Effectively: A Research Agenda. Washington, DC: The National Academies Press. Available at: https://doi.org/10.17226/23674
  • Perloff, R.M. (2020) The Dynamics of Persuasion: Communication and Attitudes in the 21st Century. 7th edn. New York: Routledge. Available at: https://www.routledge.com/The-Dynamics-of-Persuasion-Communication-and-Attitudes-in-the-21st-Century/Perloff/p/book/9780367185794
  • Rogers, E.M. (2003) Diffusion of Innovations. 5th edn. New York: Free Press.
  • Strong, E.K. (1925) The Psychology of Selling and Advertising. New York: McGraw-Hill. Available at: https://www.si.edu/object/siris_sil_383577
  • Toulmin, S.E. (2003) The Uses of Argument. Updated edn. Cambridge: Cambridge University Press. Available at: https://doi.org/10.1017/CBO9780511840005
  • World Wide Web Consortium (2024) Web Content Accessibility Guidelines (WCAG) 2.2. W3C Recommendation. Available at: https://www.w3.org/TR/WCAG22/

Back to top ↑

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top