Turning PROCESS macro output into an APA 7 table

In short

Only four blocks of PROCESS output ever reach the table: the mediator model gives path a, the outcome model gives b and the direct effect c', TOTAL EFFECT MODEL gives the total effect c, and Indirect effect(s) of X on Y gives the indirect effect ab with its bootstrap interval (BootLLCI and BootULCI). The APA 7 table has one row per effect and the columns B, SE, 95% CI and p; the indirect-effect row carries an interval and no p. When you copy, round to two decimals and put back the leading zero SPSS drops, so -.3612 becomes −0.36, and turn .0000 into p < .001. The number of resamples and the type of interval sit in the closing block of the output and belong in the table note, not in a column.

The PROCESS output is on screen, it runs to two pages of monospaced text, and your results table is still empty. The problem is not missing numbers, it is having too many. The macro prints up to three complete regressions, each with its own summary carrying R2 and F, a block of total and direct effects, another of indirect effects and a set of footnotes, and out of all that exactly five rows reach the table. This is which block feeds which row, where the indirect effect actually is, and how the finished table looks; the general guide it hangs from is how to report mediation in APA 7.

PROCESS prints a report; APA asks for five rows

Hayes built the macro so you can read the model while you work, not so you can publish it. That is why it prints every regression in full, constant included, with its R2, its F and its degrees of freedom, in the fixed-width layout SPSS has used for decades. An APA 7 mediation table is the opposite object: compact, one row per effect, with a note underneath carrying everything that is not a column. There is no button between the two, which is why this transfer is still done by hand, retyping figures into Word, and why transcription errors survive all the way to proof stage.

Everything below assumes simple mediation: model 4, with a continuous X, mediator and Y. It is the commonest case and the one that leaves the table at exactly five rows. Multiple mediators and moderated mediation change how many rows you need, not the logic, and they are covered near the end. If what you are stuck on is the previous step, choosing the model number and writing the syntax, that is in mediation and moderation with the PROCESS macro.

To have numbers on the page: 268 adults with type 2 diabetes, where illness-related distress (X) predicts medication adherence (Y) through self-efficacy (M), with 5,000 bootstrap resamples. Before copying anything, check that Sample Size reads 268 and that all three models were estimated on those same 268 cases.

The four blocks that reach the table

The mediator block. It opens with OUTCOME VARIABLE: SELFEFF and yields exactly one row: path a, the coefficient for X. In this example the line reads DISTRESS -.3612 .0603 -5.9901 .0000 -.4799 -.2425, and those six figures are, in order, the coefficient, its standard error, t, p and the two interval limits: B = −0.36, SE = 0.06, t(266) = −5.99, p < .001. The degrees of freedom are not on that line; read them from the df2 column of the Model Summary just above it.

The outcome block. It opens with OUTCOME VARIABLE: ADHERE and contains X and M together, so it gives two rows. Path b is the coefficient for the mediator, B = 0.40, SE = 0.07, t(265) = 5.65, p < .001. The direct effect c' is the coefficient for X inside that same block, B = −0.17, SE = 0.07, t(265) = −2.53, p = .012. This is where nearly everyone slips the first time: the X coefficient here is the direct effect, not the total one.

The total effect. It sits under TOTAL EFFECT MODEL, the regression of Y on X with the mediator left out: c = −0.32, SE = 0.07, t(266) = −4.47, p < .001. That block only prints if you ask for it: from version 3 of the macro you add total=1 to the syntax, and without it the total effect is still there, just as the Total effect of X on Y line inside the final block. With the same cases in both models, c = c' + ab, and here it adds up: (−0.17) + (−0.15) = −0.32. If yours does not add up, it is not rounding: one of the models has dropped cases through missing data and your table is mixing two different samples.

The indirect effects. The final block, TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y, repeats the total and the direct effect, which is a free check on your typing, and adds the one quantity that appears nowhere else: Indirect effect(s) of X on Y, with the columns Effect, BootSE, BootLLCI and BootULCI. Everything else stays out. The Model Summary panels and the constants are not rows; the fit of the outcome model goes in the text or the note, R2 = .17, F(2, 265) = 27.14, p < .001.

The indirect effect is the row that decides

The indirect effect is the product of the two paths, ab = −0.3612 × 0.4021 = −0.1452, and PROCESS prints it already computed with its bootstrap interval beside it: ab = −0.15, BootSE = 0.04, 95% bootstrap CI [−0.23, −0.08]. There is one decision rule, whether that interval contains zero, and here it does not. There is no p value on that line and you are not meant to hunt for one elsewhere: a p attached to the indirect effect did not come out of this analysis.

Two details are forgotten almost every time and they sit together in the closing block of the output, under ANALYSIS NOTES AND ERRORS: how many resamples were drawn and which interval was built, percentile or bias-corrected. Both are on the same line, the one starting Number of bootstrap samples, which spells them out, so copy it into the note rather than recalling it, because the default has changed between versions of the macro. Set the random seed before you run the analysis as well: without it the same model returns a slightly different interval on every pass, and the table is not reproducible even for you six months later. Why the interval replaces the significance test is set out in reporting bootstrap confidence intervals.

One trap costs more than the rest because it is invisible: the LLCI and ULCI columns in the regression blocks are not bootstrap intervals. They are ordinary least-squares intervals, built from the standard error and the t distribution, exactly as in any regression. Only the indirect-effect row is bootstrapped, which is why its columns are labeled BootLLCI and BootULCI. A table note claiming that every interval is bootstrapped is wrong about four of your five rows.

The finished table, row by row

Five rows and five columns: the effect, B, SE, the 95% CI and p. In APA 7 the table number goes in bold on its own line, the title sits below it in italics, there are no vertical rules and only three horizontal ones: above the headings, below the headings and at the foot. The title names the model rather than the table, something like Simple mediation of illness-related distress on medication adherence through self-efficacy.

Path a. Distress → Self-efficacy: B = −0.36, SE = 0.06, 95% CI [−0.48, −0.24], p < .001. Path b. Self-efficacy → Adherence, controlling for distress: B = 0.40, SE = 0.07, 95% CI [0.26, 0.54], p < .001. Direct effect (c'). B = −0.17, SE = 0.07, 95% CI [−0.31, −0.04], p = .012. Total effect (c). B = −0.32, SE = 0.07, 95% CI [−0.46, −0.18], p < .001. Indirect effect (ab). B = −0.15, BootSE = 0.04, 95% bootstrap CI [−0.23, −0.08], and a dash in the p cell rather than a number.

Three things change as you copy. PROCESS prints four decimals with no leading zero, and APA asks for two decimals and a leading zero on anything that can exceed 1, so -.3612 is typed as −0.36 and .4021 as 0.40. The p value works the other way, three decimals and no leading zero, and this output has two edge cases: .0000 becomes p < .001, never p = .000, and a printed .0002 also becomes p < .001. Use a true minus sign rather than a hyphen, italicize B, SE, p and N, and leave the variable names and the word bootstrap in roman.

The note carries what the columns cannot: N = 268, unstandardised coefficients, the indirect effect bootstrapped with 5,000 resamples and the interval type, a line making clear that the path intervals are least-squares intervals, and any covariates in the model. If your output also prints the completely standardized indirect effect, that belongs in the note too, since it is the one figure a reader in another field can compare with theirs. If you would rather not assemble any of this by hand, the APA 7 mediation table generator asks for these exact numbers, in the order the output prints them, and returns the formatted table and the path diagram ready to paste.

When your model is not model 4

Several mediators. Model 4 takes more than one M, and the indirect block then grows: a TOTAL line for the combined indirect effect, one line per mediator for its specific indirect effect, and the pairwise contrasts if you asked for them. The table gets one row per specific indirect effect plus one for the total, each with its own bootstrap interval. The contrasts answer the question readers actually care about, whether one mechanism carries more than another, and they are the rows most often left out.

Moderated mediation. In the conditional models (7, 8, 14 and their relatives) the row that decides is the index of moderated mediation, with its bootstrap standard error and interval. Below it go the conditional indirect effects, one per value of the moderator you requested, usually the mean and one standard deviation either side. What you cannot do is conclude moderation because one conditional effect is significant and the other is not: the difference between them is what needs testing, and that is precisely what the index does.

A binary outcome. If Y is dichotomous, PROCESS fits that model by logistic regression, so b and c' come back in log-odds while a stays in the original metric. Stacking both in one B column without saying so produces a table that means nothing, and c = c' + ab no longer holds. Separate the metrics, say which is which in the note, and do not compute a proportion mediated from those numbers.

What this looks like from the reviewer's desk

The same six errors turn up again and again, and all six come from copying without reading: a p = .000 that cannot exist, four decimals inherited from SPSS, a p value hanging off the indirect effect, a note calling the path intervals bootstrapped, a total effect that does not equal the direct plus the indirect, and no mention of how many resamples were drawn. None of them sinks a paper on its own. Together they tell the reviewer the analysis was copied rather than understood, and that does change how the rest of the manuscript is read.

The seventh error is not in the table but in the text: describing the mediation as full or partial depending on how the direct effect happened to come out. That label tracks sample size far more than it tracks the phenomenon, and Hayes has been recommending it be dropped for years. Report the magnitudes instead, say what the indirect effect is worth, what the direct effect is worth, and what share of the total the indirect accounts for, which here is roughly 46%.

If you have the output in front of you and what you cannot work out is which of those numbers is yours, paste the whole block into the output interpreter and it will point at what gets reported and what stays out. And before you call the table finished, check c' + ab by hand: it is a ten-second addition that catches half of all transcription errors.

Frequently asked questions

Where is the indirect effect in PROCESS output?

In the final block, under the heading Indirect effect(s) of X on Y, inside the TOTAL, DIRECT, AND INDIRECT EFFECTS OF X ON Y section. That line has four columns: Effect (the product ab), BootSE, BootLLCI and BootULCI. It is not in any of the regression blocks above, which is why so many papers report the direct effect believing it is the indirect one.

What do BootLLCI and BootULCI mean?

They are the lower and upper limits of the bootstrap confidence interval for the indirect effect. You report them as they stand, as a 95% bootstrap CI [−0.23, −0.08], stating in the note how many resamples were drawn. If the interval excludes zero the indirect effect differs from zero, and that is the whole decision rule.

Should I report a p value for the indirect effect?

No. Bootstrapping produces an interval, not a p value, and the decision rests on whether that interval contains zero. If a p appears in the indirect-effect row of your table it came from the Sobel test or some other procedure, and it is better to say so than to let it look like part of the same output.

Are the LLCI and ULCI columns in PROCESS bootstrap intervals?

No, they are ordinary least-squares intervals built from the standard error and the t distribution. Only the indirect effect gets a bootstrap interval, which is exactly why its columns are named BootLLCI and BootULCI. A table note attributing bootstrapping to every row is inaccurate.

What does p = .0000 mean in PROCESS output?

It means the value is smaller than .00005, not that it is zero, and in APA 7 you write p < .001; writing p = .000 is one of the most recognisable copy-paste errors there is. While you are there, round coefficients to two decimals and restore the leading zero SPSS omits, and keep p at three decimals with no leading zero.

Do I need to report the total effect as well?

It is worth including, even though the indirect effect does not depend on the total effect being significant. Having all five rows lets a reader verify that c = c' + ab and judge the proportion mediated. What you should not do is abandon a mediation because the total effect is non-significant: with moderate samples that happens routinely while the indirect effect is perfectly clear.

Would your mediation table survive a hostile read?

A Wald interval labeled as bootstrap, or a p = .000, tells a reviewer something you never intended to say about how the analysis was done. Better to see it before submission than after.

Review my manuscript free →

That is the table built and defensible. When the model gets harder, several mediators, moderated mediation, a binary outcome, or you want someone to look over the whole analysis before you submit, that is exactly what I do in my statistical consulting.

Cite this guide

Ciudad-Fernández, V. (2026, September 4). Turning PROCESS macro output into an APA 7 table. Ciudad Science. https://analisisdedatospsicologia.com/en/blog/process-macro-output-to-apa-table

Keep reading

All blog articles